Skip to content

Commit

Permalink
Merge branch 'develop' into nc-feat/links-from-existing-cols
Browse files Browse the repository at this point in the history
  • Loading branch information
dstala committed May 3, 2024
2 parents e13413a + 67dbe7c commit 464cc4f
Show file tree
Hide file tree
Showing 57 changed files with 1,821 additions and 327 deletions.
55 changes: 55 additions & 0 deletions .github/workflows/bats-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: Run BATS Tests

on:
push:
paths:
- 'docker-compose/setup-script/noco.sh'
workflow_dispatch:

jobs:
prepare:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Install jq
run: |
sudo apt-get update
sudo apt-get install -y jq
- name: Prepare matrix for test files
id: set-matrix
run: |
BATS_FILES=$(find docker-compose/setup-script/tests -name '*.bats')
MATRIX_JSON=$(echo $BATS_FILES | jq -Rsc 'split("\n") | map(select(. != ""))')
echo "matrix=$MATRIX_JSON" >> $GITHUB_ENV
test:
needs: prepare
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
test: ${{fromJson(env.matrix)}}
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Install BATS
run: |
sudo apt-get update
sudo apt-get install -y bats expect
- name: Get working directory
run: |
WORKING_DIR="$(pwd)/docker-compose/setup-script/tests"
echo "WORKING_DIR=$WORKING_DIR" >> $GITHUB_ENV
- name: Run BATS test
run: bats ${{ matrix.test }}
env:
WORKING_DIR: ${{ env.WORKING_DIR }}
SKIP_TARE_DOWN: true
6 changes: 3 additions & 3 deletions docker-compose/setup-script/noco.sh
Original file line number Diff line number Diff line change
Expand Up @@ -376,7 +376,7 @@ REQUIRED_PORTS=(80 443)

echo "** Performing nocodb system check and setup. This step may require sudo permissions"

# pre install wget if not found
# pre-install wget if not found
if ! command_exists wget; then
echo "wget is not installed. Setting up for installation..."
install_package wget
Expand All @@ -399,7 +399,7 @@ done
# f. Port mapping check
echo " | Checking port accessibility..."
for port in "${REQUIRED_PORTS[@]}"; do
if lsof -Pi :$port -sTCP:LISTEN -t >/dev/null; then
if lsof -Pi :"$port" -sTCP:LISTEN -t >/dev/null; then
echo " | WARNING: Port $port is in use. Please make sure it is free." >&2
else
echo " | Port $port is free."
Expand Down Expand Up @@ -459,7 +459,7 @@ fi

if [ -n "$EDITION" ] && { [ "$EDITION" = "EE" ] || [ "$EDITION" = "ee" ]; }; then
echo "Enter the NocoDB license key: "
read LICENSE_KEY
read -r LICENSE_KEY
if [ -z "$LICENSE_KEY" ]; then
echo "License key is required for Enterprise Edition installation"
exit 1
Expand Down
31 changes: 31 additions & 0 deletions docker-compose/setup-script/tests/configure/monitor.bats
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#!/usr/bin/env bats

NOCO_HOME="${HOME}/.nocodb"
export NOCO_HOME



setup() {
cd "${WORKING_DIR}/configure" || exit 1
./setup.sh "setup"
}

teardown() {
if [ -n "$SKIP_TEARDOWN" ]; then
return
fi

cd "${WORKING_DIR}/install" || exit 1
./setup.sh
}

@test "Properly runs monitor script" {
../expects/configure/restart.sh

cd "${NOCO_HOME}" || exit 1

# Verify container is running
docker compose ps | grep -q 'redis'
docker compose ps | grep -q 'watchtower'
docker compose ps | grep -q 'nocodb'
}
31 changes: 31 additions & 0 deletions docker-compose/setup-script/tests/configure/restart.bats
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#!/usr/bin/env bats

NOCO_HOME="${HOME}/.nocodb"
export NOCO_HOME



setup() {
cd "${WORKING_DIR}/configure" || exit 1
./setup.sh "setup"
}

teardown() {
if [ -n "$SKIP_TEARDOWN" ]; then
return
fi

cd "${WORKING_DIR}/install" || exit 1
./setup.sh
}

@test "Check all containers are restarted" {
../expects/configure/restart.sh

cd "${NOCO_HOME}" || exit 1

# Verify container is running
docker compose ps | grep -q 'redis'
docker compose ps | grep -q 'watchtower'
docker compose ps | grep -q 'nocodb'
}
33 changes: 33 additions & 0 deletions docker-compose/setup-script/tests/configure/scale.bats
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#!/usr/bin/env bats

NOCO_HOME="${HOME}/.nocodb"
export NOCO_HOME



setup() {
cd "${WORKING_DIR}/configure" || exit 1
./setup.sh "setup"
}

teardown() {
if [ -n "$SKIP_TEARDOWN" ]; then
return
fi

cd "${WORKING_DIR}/install" || exit 1
./setup.sh
}

@test "Check NocoDB is scaled to 3 instances" {
nproc() {
echo 4
}

../expects/configure/scale.sh

cd "${NOCO_HOME}" || exit 1

result=$(docker compose ps | grep -c "nocodb/nocodb")
[ "${result}" -eq 3 ]
}
17 changes: 17 additions & 0 deletions docker-compose/setup-script/tests/configure/setup.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#!/bin/bash

if [ -z "$NOCO_HOME" ]; then
NOCO_HOME="${HOME}/.nocodb"
fi

if [ -d "$NOCO_HOME" ]; then
cd "$NOCO_HOME" || exit
docker compose down
fi

cd "$WORKING_DIR" || exit
rm -rf "$NOCO_HOME"

if [ "$1" = "setup" ]; then
../noco.sh <<< $'\n\nN\n'
fi
31 changes: 31 additions & 0 deletions docker-compose/setup-script/tests/configure/start.bats
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#!/usr/bin/env bats

NOCO_HOME="${HOME}/.nocodb"
export NOCO_HOME



setup() {
cd "${WORKING_DIR}/configure" || exit 1
./setup.sh "setup"
}

teardown() {
if [ -n "$SKIP_TEARDOWN" ]; then
return
fi

cd "${WORKING_DIR}/install" || exit 1
./setup.sh
}

@test "Check all containers are up" {
../expects/configure/start.sh

cd "${NOCO_HOME}" || exit 1

# Verify container is running
docker compose ps | grep -q 'redis'
docker compose ps | grep -q 'watchtower'
docker compose ps | grep -q 'nocodb'
}
30 changes: 30 additions & 0 deletions docker-compose/setup-script/tests/configure/stop.bats
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#!/usr/bin/env bats

NOCO_HOME="${HOME}/.nocodb"
export NOCO_HOME



setup() {
cd "${WORKING_DIR}/configure" || exit 1
./setup.sh setup
}

teardown() {
if [ -n "$SKIP_TEARDOWN" ]; then
return
fi

cd "${WORKING_DIR}/install" || exit 1
./setup.sh
}

@test "Check all containers are down" {
../expects/configure/stop.sh

cd "${NOCO_HOME}" || exit 1

# Verify container is not running
count=$(docker compose ps -q | wc -l)
[ "$count" -eq 0 ]
}
31 changes: 31 additions & 0 deletions docker-compose/setup-script/tests/configure/upgrade.bats
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#!/usr/bin/env bats

NOCO_HOME="${HOME}/.nocodb"
export NOCO_HOME



setup() {
cd "${WORKING_DIR}/configure" || exit 1
./setup.sh "setup"
}

teardown() {
if [ -n "$SKIP_TEARDOWN" ]; then
return
fi

cd "${WORKING_DIR}/install" || exit 1
./setup.sh
}

@test "Check all containers are upgraded" {
../expects/configure/upgrade.sh

cd "${NOCO_HOME}" || exit 1

# Verify container is running
docker compose ps | grep -q 'redis'
docker compose ps | grep -q 'watchtower'
docker compose ps | grep -q 'nocodb'
}
22 changes: 22 additions & 0 deletions docker-compose/setup-script/tests/expects/configure/monitor.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#!/usr/bin/expect -f

# Configure timeout for each expect command
set timeout 10

# Start your main script
set env(PATH) "$env(WORKING_DIR)/mocks:$env(PATH)"

spawn bash ../../noco.sh

expect "Do you want to reinstall NocoDB*"
send "N\r"

expect "Enter your choice: "
send "7\r"

send \x03

expect "Enter your choice: "
send "0\r"

expect EOF
20 changes: 20 additions & 0 deletions docker-compose/setup-script/tests/expects/configure/restart.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#!/usr/bin/expect -f

# Configure timeout for each expect command
set timeout 10

# Start your main script
set env(PATH) "$env(WORKING_DIR)/mocks:$env(PATH)"

spawn bash ../../noco.sh

expect "Do you want to reinstall NocoDB*"
send "N\r"

expect "Enter your choice: "
send "4\r"

expect "Enter your choice: "
send "0\r"

expect EOF
23 changes: 23 additions & 0 deletions docker-compose/setup-script/tests/expects/configure/scale.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#!/usr/bin/expect -f

# Configure timeout for each expect command
set timeout 10

# Start your main script
set env(PATH) "$env(WORKING_DIR)/mocks:$env(PATH)"

spawn bash ../../noco.sh

expect "Do you want to reinstall NocoDB*"
send "N\r"

expect "Enter your choice: "
send "6\r"

expect "How many instances of NocoDB do you want to run*"
send "3\r"

expect "Enter your choice: "
send "0\r"

expect EOF
20 changes: 20 additions & 0 deletions docker-compose/setup-script/tests/expects/configure/start.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#!/usr/bin/expect -f

# Configure timeout for each expect command
set timeout 10

# Start your main script
set env(PATH) "$env(WORKING_DIR)/mocks:$env(PATH)"

spawn bash ../../noco.sh

expect "Do you want to reinstall NocoDB*"
send "N\r"

expect "Enter your choice: "
send "1\r"

expect "Enter your choice: "
send "0\r"

expect EOF

1 comment on commit 464cc4f

@github-actions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The PR changes have been deployed. Please run the following command to verify:

docker run -d -p 8888:8080 nocodb/nocodb-timely:0.205.0-pr-8367-20240503-1340

Please sign in to comment.