1name: Memory tests
2on:
3  schedule:
4    # run daily 20:00 on master branch
5    - cron: '0 20 * * *'
6  push:
7    branches:
8      - prerelease_test
9      - memory_test
10jobs:
11  memory_leak:
12    name: Memory leak on insert PG${{ matrix.pg }}
13    runs-on: ubuntu-20.04
14    strategy:
15      matrix:
16        pg: [12, 13, 14]
17      fail-fast: false
18
19    steps:
20    - name: Install Dependencies
21      run: |
22        sudo apt-get update
23        sudo apt-get install gnupg systemd-coredump gdb postgresql-common libkrb5-dev python3-psutil
24        yes | sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh
25        sudo apt-get update
26        sudo apt-get install postgresql-${{ matrix.pg }} postgresql-server-dev-${{ matrix.pg }}
27
28    - name: Checkout TimescaleDB
29      uses: actions/checkout@v2
30
31    - name: Build TimescaleDB
32      run: |
33        ./bootstrap -DCMAKE_BUILD_TYPE=Release
34        make -C build
35        sudo make -C build install
36
37    - name: Setup database
38      run: |
39        sudo tee -a /etc/postgresql/${{ matrix.pg }}/main/postgresql.conf <<-CONF
40          shared_preload_libraries = 'timescaledb'
41          max_worker_processes = 0
42          log_destination = syslog
43          max_wal_size = 8GB
44          max_wal_senders = 0
45          wal_level = minimal
46          checkpoint_timeout = 20min
47          log_checkpoints = on
48          bgwriter_lru_maxpages = 0
49          track_counts = off
50          fsync = off
51          port = 5432
52        CONF
53        sudo grep port /etc/postgresql/${{ matrix.pg }}/main/postgresql.conf
54        sudo systemctl start postgresql@${{ matrix.pg }}-main.service
55        sudo -u postgres psql -X -c "CREATE USER runner SUPERUSER LOGIN;"
56
57    - name: Run memory test
58      run: |
59        sudo -u postgres python ./scripts/test_memory_spikes.py & sleep 5 && psql -d postgres -v ECHO=all -X -f scripts/out_of_order_random_direct.sql
60
61    - name: Postgres log
62      if: always()
63      run: |
64        sudo journalctl -u postgresql@${{ matrix.pg }}-main.service
65
66