From 5674022c39523ace3540394b59c319c3be38da17 Mon Sep 17 00:00:00 2001 From: Ali Naqvi Date: Mon, 27 May 2024 11:13:06 +0800 Subject: [PATCH 1/4] fix(specs): clean and fix specs --- .env | 5 +++ docker-compose.yml | 62 +++++++++++++++++++++++++++----- spec/controllers/drivers_spec.cr | 15 -------- spec/controllers/edges_spec.cr | 3 ++ spec/controllers/systems_spec.cr | 6 ++++ spec/spec_helpers/core_helper.cr | 4 +-- 6 files changed, 69 insertions(+), 26 deletions(-) create mode 100644 .env diff --git a/.env b/.env new file mode 100644 index 00000000..cd9184e8 --- /dev/null +++ b/.env @@ -0,0 +1,5 @@ + AWS_REGION="us-east-1" + AWS_KEY="root" + AWS_SECRET="password" + AWS_S3_ENDPOINT="http://minio:9000" + AWS_S3_BUCKET="placeos-drivers-build-service" diff --git a/docker-compose.yml b/docker-compose.yml index 9d6ffec6..2867c710 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,6 @@ version: "3.7" x-deployment-env: &deployment-env ENV: ${ENV:-development} SG_ENV: ${SG_ENV:-development} - TZ: $TZ x-elastic-client-env: &elastic-client-env ELASTIC_HOST: ${ELASTIC_HOST:-elastic} @@ -26,6 +25,18 @@ x-postgresdb-client-env: &postgresdb-client-env x-search-ingest-client-env: &search-ingest-client-env SEARCH_INGEST_URI: ${SEARCH_INGEST_URI:-http://search-ingest:3000} +x-s3-client-env: &s3-client-env + AWS_REGION: ${AWS_REGION:-"us-east-1"} + AWS_KEY: ${AWS_KEY:-"root"} + AWS_SECRET: ${AWS_SECRET:-"password"} + AWS_S3_ENDPOINT: ${AWS_S3_ENDPOINT:-"http://minio:9000"} + AWS_S3_BUCKET: ${AWS_S3_BUCKET:-"placeos-drivers-build-service"} + +x-build-api-env: &build-api-env + BUILD_API_HOST: ${BUILD_API_HOST:-build_service} + BUILD_API_PORT: ${BUILD_API_PORT:-3000} + + services: test: # Rest API image: placeos/service-spec-runner:${CRYSTAL_VERSION:-latest} @@ -73,13 +84,6 @@ services: ports: - 9200:9200 - elasticvue: - image: cars10/elasticvue:latest - restart: always - hostname: elasticvue - ports: - - 8080:8080 - redis: image: eqalpha/keydb restart: always @@ -147,7 +151,6 @@ services: *redis-client-env, ] COAUTH_NO_SSL: "true" - TZ: $TZ PLACE_URI: https://${PLACE_DOMAIN:-localhost:8443} core: # Module coordinator @@ -158,6 +161,7 @@ services: - redis - migrator - postgres + - build_service ulimits: nofile: 40000 core: @@ -172,5 +176,45 @@ services: *postgresdb-client-env, # Environment *deployment-env, + # Build API + *build-api-env, ] + build_service: + image: placeos/build_service:nightly + restart: always + hostname: build_service + depends_on: + - minio + - testbucket + environment: + <<: *s3-client-env + + minio: + image: minio/minio:latest + volumes: + - s3:/data + ports: + - 9000:9000 + - 9090:9090 + environment: + << : *s3-client-env + MINIO_ROOT_USER: $AWS_KEY + MINIO_ROOT_PASSWORD: $AWS_SECRET + command: server /data --console-address ":9090" + + testbucket: + image: minio/mc:latest + depends_on: + - minio + environment: + << : *s3-client-env + entrypoint: > + sh -c ' + sleep 3 && + mc config host add s3 $AWS_S3_ENDPOINT $AWS_KEY $AWS_SECRET && + mc mb -p s3/$AWS_S3_BUCKET && + exit 0 + ' +volumes: + s3: \ No newline at end of file diff --git a/spec/controllers/drivers_spec.cr b/spec/controllers/drivers_spec.cr index be319026..5f85a51c 100644 --- a/spec/controllers/drivers_spec.cr +++ b/spec/controllers/drivers_spec.cr @@ -72,21 +72,6 @@ module PlaceOS::Api result.body.should contain "role must not change" end end - - it "POST /:id/recompile" do - driver = get_driver - path = File.join(Drivers.base_route, "#{driver.id.not_nil!}/recompile") - response = client.post( - path: path, - headers: Spec::Authentication.headers, - ) - - response.success?.should be_true - unless response.status_code == 208 || response.body.empty? - updated = Model::Driver.from_trusted_json(response.body) - updated.commit.starts_with?("RECOMPILE").should be_false - end - end end describe "scopes" do diff --git a/spec/controllers/edges_spec.cr b/spec/controllers/edges_spec.cr index 1b7eab26..80dc7aeb 100644 --- a/spec/controllers/edges_spec.cr +++ b/spec/controllers/edges_spec.cr @@ -42,6 +42,9 @@ module PlaceOS::Api end describe "CRUD operations", tags: "crud" do + ::Spec.before_each do + PlaceOS::Model::Edge.clear + end Spec.test_crd(Model::Edge, Edges) describe "create" do diff --git a/spec/controllers/systems_spec.cr b/spec/controllers/systems_spec.cr index a6f1013b..b048aef6 100644 --- a/spec/controllers/systems_spec.cr +++ b/spec/controllers/systems_spec.cr @@ -3,6 +3,12 @@ require "http/web_socket" require "../helper" module PlaceOS::Api + ::Spec.before_each do + PlaceOS::Model::Module.clear + PlaceOS::Model::Driver.clear + PlaceOS::Model::ControlSystem.clear + end + def self.spec_add_module(system, mod, headers) mod_id = mod.id.as(String) path = Systems::NAMESPACE.first + "#{system.id}/module/#{mod_id}" diff --git a/spec/spec_helpers/core_helper.cr b/spec/spec_helpers/core_helper.cr index d01d78fb..f55bd7e5 100644 --- a/spec/spec_helpers/core_helper.cr +++ b/spec/spec_helpers/core_helper.cr @@ -53,12 +53,12 @@ def setup_system(repository_folder_name = "private-drivers") driver.repository = repository driver.save! + control_system = PlaceOS::Model::Generator.control_system.save! + mod = PlaceOS::Model::Generator.module(driver: driver) mod.running = true mod.save! - control_system = PlaceOS::Model::Generator.control_system.save! - mod.control_system = control_system control_system.modules = [mod.id.as(String)] From 447603c3605d536166b591ec7ed1dad3d5b009a7 Mon Sep 17 00:00:00 2001 From: Ali Naqvi Date: Mon, 27 May 2024 12:20:22 +0800 Subject: [PATCH 2/4] chore(linter): make linter happy --- src/placeos-rest-api/controllers/modules.cr | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/placeos-rest-api/controllers/modules.cr b/src/placeos-rest-api/controllers/modules.cr index 026a5f4c..7e8bfa1c 100644 --- a/src/placeos-rest-api/controllers/modules.cr +++ b/src/placeos-rest-api/controllers/modules.cr @@ -246,8 +246,8 @@ module PlaceOS::Api query = %({#{stream}="core"} | logfmt | source = "#{current_module.id}" | level = "[E]") results = client.query_range(query, 20, error_timestamp - 1.hour, error_timestamp, Loki::Direction::Backward) entries = Array(String).new - results.response_data.result.as(Loki::Model::Streams).each do |stream| - stream.entries.each { |entry| entries << (entry.line.try &.gsub("+ ", "") || "\n") } + results.response_data.result.as(Loki::Model::Streams).each do |res_stream| + res_stream.entries.each { |entry| entries << (entry.line.try &.gsub("+ ", "") || "\n") } end entries From 2277b85c41de458ffbf8f36df12d3cabba37bcd7 Mon Sep 17 00:00:00 2001 From: Ali Naqvi Date: Mon, 27 May 2024 12:38:00 +0800 Subject: [PATCH 3/4] chore(linter): handle linter false alarms --- spec/spec_helpers/spec.cr | 3 ++- src/placeos-rest-api/controllers/asset_types.cr | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/spec/spec_helpers/spec.cr b/spec/spec_helpers/spec.cr index c07a246e..c47d7cb5 100644 --- a/spec/spec_helpers/spec.cr +++ b/spec/spec_helpers/spec.cr @@ -22,7 +22,8 @@ module PlaceOS::Api::Spec name = random_name doc.name = name doc.save! - + sleep 1 + refresh_elastic({{ klass }}.table_name) doc.persisted?.should be_true diff --git a/src/placeos-rest-api/controllers/asset_types.cr b/src/placeos-rest-api/controllers/asset_types.cr index bfc68a8d..b41c550f 100644 --- a/src/placeos-rest-api/controllers/asset_types.cr +++ b/src/placeos-rest-api/controllers/asset_types.cr @@ -58,6 +58,7 @@ module PlaceOS::Api ).each { |(id, count)| counts[id] = count } end + # ameba:disable Style/VerboseBlock results.each { |type| type.asset_count = counts[type.id]? || 0_i64 } counts end From 0fc883393099fc5866ac629ef7bd842aa9f0d393 Mon Sep 17 00:00:00 2001 From: Ali Naqvi Date: Mon, 27 May 2024 12:53:28 +0800 Subject: [PATCH 4/4] chore(integration): Adding some delay to cope with GA machine --- spec/controllers/systems_spec.cr | 2 +- spec/spec_helpers/spec.cr | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/controllers/systems_spec.cr b/spec/controllers/systems_spec.cr index b048aef6..1848415c 100644 --- a/spec/controllers/systems_spec.cr +++ b/spec/controllers/systems_spec.cr @@ -186,7 +186,7 @@ module PlaceOS::Api sys.modules = [module_id] end systems.each &.save! - + sleep 1 expected_ids = expected_systems.compact_map(&.id) total_ids = expected_ids.size diff --git a/spec/spec_helpers/spec.cr b/spec/spec_helpers/spec.cr index c47d7cb5..cc92c167 100644 --- a/spec/spec_helpers/spec.cr +++ b/spec/spec_helpers/spec.cr @@ -23,7 +23,7 @@ module PlaceOS::Api::Spec doc.name = name doc.save! sleep 1 - + refresh_elastic({{ klass }}.table_name) doc.persisted?.should be_true