Skip to content

Commit e56fe2b

Browse files
use local pg
While this approach requires the manual step of install pg it makes things simpler
1 parent e13c7b4 commit e56fe2b

6 files changed

Lines changed: 152 additions & 255 deletions

File tree

.github/workflows/test.yml

Lines changed: 62 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,37 +5,80 @@ on:
55
pull_request:
66
branches: ["master"]
77

8-
env:
9-
CARGO_TERM_COLOR: always
10-
118
jobs:
129
test:
1310
runs-on: large
11+
1412
steps:
1513
- uses: actions/checkout@v4
14+
1615
- uses: dtolnay/rust-toolchain@master
1716
name: Install rust
1817
with:
1918
toolchain: 1.88.0
19+
2020
- uses: Swatinem/rust-cache@v2
21-
- name: Run initial test to setup PG
22-
run: cargo test -p shared --features test -- --no-capture
23-
env:
24-
RPC_URL: ${{ secrets.RPC_URL }}
25-
- name: Install pgrx system dependencies
26-
run: >
27-
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' &&
28-
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg &&
29-
sudo apt update -y &&
30-
sudo apt install -y build-essential pkg-config libssl-dev postgresql-server-dev-17
21+
22+
- name: Cache cargo-pgrx + cargo registry
23+
uses: actions/cache@v4
24+
with:
25+
path: |
26+
~/.cargo/bin/cargo-pgrx
27+
~/.cargo/registry
28+
~/.cargo/git
29+
key: ${{ runner.os }}-cargo-pgrx-0.16.1-${{ hashFiles('**/Cargo.lock') }}
30+
31+
- name: Install PostgreSQL 18
32+
run: |
33+
sudo systemctl stop postgresql
34+
sudo pg_dropcluster --stop 16 main || true
35+
sudo install -d -m 0755 /etc/apt/keyrings
36+
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc \
37+
| sudo gpg --dearmor --yes --batch --no-tty \
38+
-o /etc/apt/keyrings/postgresql.gpg
39+
sudo chmod 0644 /etc/apt/keyrings/postgresql.gpg
40+
echo "deb [signed-by=/etc/apt/keyrings/postgresql.gpg] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" \
41+
| sudo tee /etc/apt/sources.list.d/pgdg.list >/dev/null
42+
sudo apt-get update -y
43+
sudo apt-get install -y \
44+
build-essential pkg-config libssl-dev \
45+
postgresql-server-dev-18 postgresql-18 postgresql-client-18
46+
47+
echo "/usr/lib/postgresql/18/bin" >> $GITHUB_PATH
48+
sudo systemctl start postgresql
49+
50+
51+
sudo -u postgres psql -tAc "select version(); show data_directory; show port; show listen_addresses;"
52+
sudo -u postgres createuser --superuser --createdb --createrole golden_axe
53+
sudo tee /etc/postgresql/18/main/pg_hba.conf >/dev/null <<'EOF'
54+
local all all trust
55+
host all all 127.0.0.1/32 trust
56+
host all all ::1/128 trust
57+
EOF
58+
sudo systemctl reload postgresql
59+
sudo -u postgres psql -c "SELECT version();"
60+
sudo -u postgres psql -tAc "SHOW port;"
61+
sudo -u postgres createdb golden_axe_test
62+
63+
- name: Wait for Postgres
64+
run: |
65+
for i in {1..30}; do
66+
pg_isready -h localhost -p 5432 && exit 0
67+
sleep 1
68+
done
69+
echo "Postgres did not become ready in time" >&2
70+
exit 1
71+
3172
- name: Install pgrx
32-
run: >
33-
cargo install --locked cargo-pgrx --version="0.15.0" &&
34-
cargo pgrx init --pg17 /tmp/golden-axe-pg-test/install/postgresql-17.2.0-x86_64-unknown-linux-gnu/bin/pg_config
73+
run: |
74+
cargo install --locked cargo-pgrx --version="0.16.1"
75+
cargo pgrx init --pg18 /usr/lib/postgresql/18/bin/pg_config
76+
3577
- name: Install PG extension
36-
run: >
37-
cd pg_golden_axe &&
38-
cargo pgrx install -p pg_golden_axe --pg-config /tmp/golden-axe-pg-test/install/postgresql-17.2.0-x86_64-unknown-linux-gnu/bin/pg_config
78+
run: |
79+
cd pg_golden_axe
80+
cargo pgrx install --sudo -p pg_golden_axe -c /usr/lib/postgresql/18/bin/pg_config
81+
3982
- name: Run tests
4083
run: cargo test -- --no-capture
4184
env:

Cargo.lock

Lines changed: 10 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

readme.md

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -14,47 +14,43 @@
1414

1515
Mac
1616
```
17+
brew install postgresql@18
18+
brew services start postgresql@18
19+
echo 'export PATH="/opt/homebrew/opt/postgresql@18/bin:$PATH"' >> ~/.zshrc
20+
1721
brew install icu4c pkg-config openssl@3
1822
export PKG_CONFIG_PATH="/opt/homebrew/opt/icu4c/lib/pkgconfig"
1923
```
2024

2125
Linux
2226
```
23-
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > \
24-
/etc/apt/sources.list.d/pgdg.list'
2527
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc \
26-
| sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg
27-
sudo apt update -y
28-
sudo apt install -y build-essential pkg-config libssl-dev postgresql-server-dev-17
28+
| sudo gpg --dearmor --yes --batch --no-tty \
29+
-o /etc/apt/keyrings/postgresql.gpg
30+
sudo chmod 0644 /etc/apt/keyrings/postgresql.gpg
31+
echo "deb [signed-by=/etc/apt/keyrings/postgresql.gpg] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" \
32+
| sudo tee /etc/apt/sources.list.d/pgdg.list >/dev/null
33+
sudo apt-get update -y
34+
sudo apt-get install -y build-essential pkg-config libssl-dev postgresql-server-dev-18 postgresql-18 postgresql-client-18
2935
```
3036

31-
3. Build
37+
3. Install Postgres Extension
3238

3339
```
3440
cargo install --locked cargo-pgrx --version="0.16.1"
35-
cargo pgrx init --pg17 download
36-
cargo build
37-
cargo test
41+
cargo pgrx init --pg18 pg_config
42+
cargo pgrx install -p pg_golden_axe
3843
```
3944

40-
If you get an error indicating that pg_golden_axe is not installed:
41-
42-
```
43-
cargo pgrx install \
44-
-p pg_golden_axe \
45-
-c /tmp/golden-axe-pg-test/install/postgresql-17.2.0-aarch64-apple-darwin/bin/pg_config
46-
```
47-
48-
49-
4. Clone and test
45+
4. Test
5046

5147
```
52-
git clone git@github.com:indexsupply/golden-axe.git
53-
cd golden-axe
48+
createuser --superuser --createdb --createrole golden_axe
49+
createdb golden_axe_test
5450
cargo test
5551
```
5652

57-
5. Create databases
53+
5. Run
5854

5955
```
6056
createdb be

shared/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ tar = { version = "0.4.43", optional = true }
2525
flate2 = { version = "1.0.35", optional = true }
2626
reqwest = { version = "0.12.12", features = ["deflate", "gzip", "json"] }
2727
target-triple = { version = "0.1.3", optional = true }
28+
url = "2.5.8"
2829

2930
[dev-dependencies]
3031
test-log = { version = "0.2", default-features = false, features = [

shared/src/jrpc.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,8 @@ mod tests {
277277

278278
#[test_log::test(tokio::test)]
279279
async fn test_block_and_logs() {
280-
let url = std::env::var("RPC_URL").unwrap_or_else(|_| "https://eth.merkle.io/".to_string());
280+
let url =
281+
std::env::var("RPC_URL").unwrap_or_else(|_| "https://rpc.flashbots.net/".to_string());
281282
let client = super::Client::new(&url);
282283
let n: u64 = 12_911_679;
283284

0 commit comments

Comments
 (0)