From 5c48f40dee434d841f14f28621811ce6bed93ba0 Mon Sep 17 00:00:00 2001 From: Skander Mzali Date: Thu, 4 Jan 2024 13:11:41 -0800 Subject: [PATCH 1/8] Add Github Workflow for testing with docker-compose --- .github/workflows/test.yaml | 22 +++++++++++++++++++ Dockerfile | 3 ++- docker-compose.yml | 2 +- server/config/test.exs | 11 ++++++---- .../orcasite_web/graphql/moderator_test.exs | 7 +++--- 5 files changed, 35 insertions(+), 10 deletions(-) create mode 100644 .github/workflows/test.yaml diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml new file mode 100644 index 00000000..04f57e54 --- /dev/null +++ b/.github/workflows/test.yaml @@ -0,0 +1,22 @@ +name: Docker test + +on: + pull_request: + branches: + - main + +jobs: + test: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Build containers + run: docker-compose build --build-arg MIX_ENV=test + + - name: Start containers + run: docker-compose up -d db cache + + - name: Run tests + run: docker compose run web bash -c 'cd server && mix test' \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index c785cbf3..e86f132a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -43,9 +43,10 @@ ENV APP_HOME /app RUN mkdir -p $APP_HOME WORKDIR $APP_HOME +ARG MIX_ENV=dev EXPOSE 3000 EXPOSE 4000 -ENV PORT=4000 UI_PORT=3000 MIX_ENV=dev +ENV PORT=4000 UI_PORT=3000 MIX_ENV=${MIX_ENV} # Create a new stage so that local dev setup can stop here # Local dev mounts into the container so there's no point in adding/compiling diff --git a/docker-compose.yml b/docker-compose.yml index e7139f21..aa49abc5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,7 +9,7 @@ services: - REDIS_HOST=cache - REDIS_PORT=6379 ports: - - "3000:3000" + # - "3000:3000" - "4000:4000" depends_on: db: diff --git a/server/config/test.exs b/server/config/test.exs index c6fd81a3..b2074c4f 100644 --- a/server/config/test.exs +++ b/server/config/test.exs @@ -14,10 +14,12 @@ config :logger, level: :warning # Configure your database config :orcasite, Orcasite.Repo, adapter: Ecto.Adapters.Postgres, - username: "postgres", - password: "postgres", - database: "orcasite_test#{System.get_env("MIX_TEST_PARTITION")}", - hostname: "localhost", + username: System.get_env("POSTGRES_USER") || "postgres", + password: System.get_env("POSTGRES_PASSWORD") || "postgres", + database: + System.get_env("POSTGRES_DATABASE") || "orcasite_test#{System.get_env("MIX_TEST_PARTITION")}", + port: System.get_env("POSTGRES_PORT") || 5432, + hostname: System.get_env("POSTGRES_HOST") || "localhost", pool: Ecto.Adapters.SQL.Sandbox, types: Orcasite.PostgresTypes, pool_size: 10 @@ -32,6 +34,7 @@ config :orcasite, :cache_adapter, Nebulex.Adapters.Local config :hammer, backend: {Hammer.Backend.ETS, [expiry_ms: 60_000 * 60 * 4, cleanup_interval_ms: 60_000 * 10]} + config :orcasite, OrcasiteWeb.BasicAuth, username: "admin", password: "password" config :ash_graphql, :policies, show_policy_breakdowns?: true config :orcasite, Orcasite.Radio, graphql: [show_raised_errors?: true] diff --git a/server/test/orcasite_web/graphql/moderator_test.exs b/server/test/orcasite_web/graphql/moderator_test.exs index 834a8e36..660ed869 100644 --- a/server/test/orcasite_web/graphql/moderator_test.exs +++ b/server/test/orcasite_web/graphql/moderator_test.exs @@ -39,7 +39,8 @@ defmodule OrcasiteWeb.ModeratorTest do playlist_timestamp: DateTime.to_unix(DateTime.utc_now()), player_offset: 5.54, description: "Test detection", - listener_count: 1 + listener_count: 1, + send_notifications: false }) |> Orcasite.Radio.load!(:candidate) @@ -90,9 +91,7 @@ defmodule OrcasiteWeb.ModeratorTest do assert %{ "data" => %{ - "notificationsForCandidate" => [ - %{"id" => _} | _ - ] + "notificationsForCandidate" => [] } } = json_response(conn, 200) From 911000e3fea4de3afbc82d8fd2a212040b4aada7 Mon Sep 17 00:00:00 2001 From: Skander Mzali Date: Thu, 4 Jan 2024 13:22:42 -0800 Subject: [PATCH 2/8] Use docker-compose instead of docker compose in workflow --- .github/workflows/test.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 04f57e54..5421ec41 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -19,4 +19,4 @@ jobs: run: docker-compose up -d db cache - name: Run tests - run: docker compose run web bash -c 'cd server && mix test' \ No newline at end of file + run: docker-compose run web bash -c 'cd server && mix test' \ No newline at end of file From fec7c6830dd3ba27655646778eaa6655f423d6e7 Mon Sep 17 00:00:00 2001 From: Skander Mzali Date: Thu, 4 Jan 2024 13:29:02 -0800 Subject: [PATCH 3/8] Try failing test in workflow --- server/test/orcasite_web/graphql/moderator_test.exs | 1 + 1 file changed, 1 insertion(+) diff --git a/server/test/orcasite_web/graphql/moderator_test.exs b/server/test/orcasite_web/graphql/moderator_test.exs index 660ed869..977f8634 100644 --- a/server/test/orcasite_web/graphql/moderator_test.exs +++ b/server/test/orcasite_web/graphql/moderator_test.exs @@ -68,6 +68,7 @@ defmodule OrcasiteWeb.ModeratorTest do """ }) + assert false assert %{ "data" => %{ "notifyConfirmedCandidate" => %{"result" => %{"id" => _}} From 7b24a17d2f1991f18aa2a88b18748e334b48583b Mon Sep 17 00:00:00 2001 From: Skander Mzali Date: Thu, 4 Jan 2024 13:36:34 -0800 Subject: [PATCH 4/8] Revert to working tests --- .github/workflows/test.yaml | 2 +- server/test/orcasite_web/graphql/moderator_test.exs | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 5421ec41..683d9fec 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -1,4 +1,4 @@ -name: Docker test +name: Docker on: pull_request: diff --git a/server/test/orcasite_web/graphql/moderator_test.exs b/server/test/orcasite_web/graphql/moderator_test.exs index 977f8634..660ed869 100644 --- a/server/test/orcasite_web/graphql/moderator_test.exs +++ b/server/test/orcasite_web/graphql/moderator_test.exs @@ -68,7 +68,6 @@ defmodule OrcasiteWeb.ModeratorTest do """ }) - assert false assert %{ "data" => %{ "notifyConfirmedCandidate" => %{"result" => %{"id" => _}} From 8fb71cc026d9864eaba7406006ffb69441b8da35 Mon Sep 17 00:00:00 2001 From: skanderm Date: Fri, 5 Jan 2024 14:29:59 -0500 Subject: [PATCH 5/8] Rename Docker to CI in test.yaml Co-authored-by: Paul Cretu --- .github/workflows/test.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 683d9fec..aba3c8da 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -1,4 +1,4 @@ -name: Docker +name: CI on: pull_request: From 27ac5524eb3fe12c257bb4eb1faa765f8e4df685 Mon Sep 17 00:00:00 2001 From: skanderm Date: Fri, 5 Jan 2024 14:30:12 -0500 Subject: [PATCH 6/8] Update actions checkout to v4 from v2 Co-authored-by: Paul Cretu --- .github/workflows/test.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index aba3c8da..15f775ef 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Build containers run: docker-compose build --build-arg MIX_ENV=test From f787f85be09dda305fc53f7ae64c5a53daae4521 Mon Sep 17 00:00:00 2001 From: skanderm Date: Fri, 5 Jan 2024 14:30:29 -0500 Subject: [PATCH 7/8] Run tests on push to main Co-authored-by: Paul Cretu --- .github/workflows/test.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 15f775ef..172102ce 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -1,9 +1,10 @@ name: CI on: + push: + branches: [main] pull_request: - branches: - - main + branches: [main] jobs: test: From 8175063e8bfd6b869376b52078af589412f5e6e6 Mon Sep 17 00:00:00 2001 From: Skander Mzali Date: Fri, 5 Jan 2024 11:31:23 -0800 Subject: [PATCH 8/8] Rename test.yaml to ci.yaml. Uncomment 3000 port mapping --- .github/workflows/{test.yaml => ci.yaml} | 0 docker-compose.yml | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename .github/workflows/{test.yaml => ci.yaml} (100%) diff --git a/.github/workflows/test.yaml b/.github/workflows/ci.yaml similarity index 100% rename from .github/workflows/test.yaml rename to .github/workflows/ci.yaml diff --git a/docker-compose.yml b/docker-compose.yml index aa49abc5..e7139f21 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,7 +9,7 @@ services: - REDIS_HOST=cache - REDIS_PORT=6379 ports: - # - "3000:3000" + - "3000:3000" - "4000:4000" depends_on: db: