From 4ed88b66f460d0a9d1c3c59f7081ec28c5e480c0 Mon Sep 17 00:00:00 2001 From: Macpie Date: Tue, 21 May 2024 16:37:39 -0700 Subject: [PATCH 01/54] Basic docker compose for mobile stack testing --- docker-compose.yml | 160 ------------------------ docker/mobile/Dockerfile | 94 ++++++++++++++ docker/mobile/docker-compose.yml | 46 +++++++ docker/mobile/localstack/init-s3.sh | 6 + docker/mobile/postgres/001-init-dbs.sql | 43 +++++++ docker/mobile/settings/ingest.toml | 15 +++ 6 files changed, 204 insertions(+), 160 deletions(-) delete mode 100644 docker-compose.yml create mode 100644 docker/mobile/Dockerfile create mode 100644 docker/mobile/docker-compose.yml create mode 100755 docker/mobile/localstack/init-s3.sh create mode 100644 docker/mobile/postgres/001-init-dbs.sql create mode 100644 docker/mobile/settings/ingest.toml diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index be3262481..000000000 --- a/docker-compose.yml +++ /dev/null @@ -1,160 +0,0 @@ -version: "2.4" -services: - - mobile-config: - image: mobile-config:latest - build: - context: . - dockerfile: mobile_config.Dockerfile - depends_on: - - postgres - ports: - - 8090:8090 - environment: - CFG__DATABASE__URL: postgres://postgres:postgres@postgres:5432/mobile_config_db - CFG__DATABASE__MAX_CONNECTIONS: 50 - CFG__METADATA__URL: postgres://postgres:postgres@postgres:5432/mobile_metadata_db - CFG__METADATA__MAX_CONNECTIONS: 50 - CFG__LISTEN: 0.0.0.0:8090 - CFG__METRICS__ENDPOINT: 0.0.0.0:19010 - CFG__ADMIN_PUBKEY: ${CONFIG_ADMIN_PUBKEY} - CFG__SIGNING_KEYPAIR: /config-signing-key.bin - CFG__LOG: debug - volumes: - - ${CONFIG_SIGNING_KEY}:/config-signing-key.bin:ro - - iot-config: - image: iot-config:latest - build: - context: . - dockerfile: iot_config.Dockerfile - depends_on: - - postgres - ports: - - "8080:8080" - environment: - CFG__DATABASE__URL: postgres://postgres:postgres@postgres:5432/iot_config_db - CFG__DATABASE__MAX_CONNECTIONS: 50 - CFG__METADATA__URL: postgres://postgres:postgres@postgres:5432/iot_metadata_db - CFG__METADATA__MAX_CONNECTIONS: 50 - CFG__LISTEN: 0.0.0.0:8080 - CFG__METRICS__ENDPOINT: 0.0.0.0:19000 - CFG__ADMIN: ${CONFIG_ADMIN_PUBKEY} - CFG__KEYPAIR: /config-signing-key.bin - CFG__LOG: info - volumes: - - ${CONFIG_SIGNING_KEY}:/config-signing-key.bin:ro - - postgres: - image: postgres:latest - environment: - POSTGRES_PASSWORD: postgres - POSTGRES_USER: postgres - POSTGRES_DBS: > - iot_config_db - iot_metadata_db - mobile_index_db - iot_index_db - mobile_verifier_db - iot_verifier_db - mobile_config_db - mobile_metadata_db - iot_packet_verifier_db - mobile_packet_verifier_db - PGDATA: /data - ports: - - "5432:5432" - entrypoint: - - /bin/bash - - -c - - | - for db in $${POSTGRES_DBS[@]} - do - cat > /docker-entrypoint-initdb.d/$${db}-setup.sql < - mobile-ingest - iot-ingest - iot-entropy - mobile-verifier - iot-verifier - mobile-packet-verifier - iot-packet-verifier - iot-price - mobile-price - ORACLE_ID: oraclesecretid - ORACLE_KEY: oraclesecretkey - entrypoint: - - /bin/bash - - -c - - | - cat > /bucket-policy.json < /dev/null 2>&1 ; then - echo "creating bucket $${bucket}" - /usr/bin/mc mb localminio/$${bucket} - fi - done - /usr/bin/mc admin policy add localminio fullaccess /bucket-policy.json - /usr/bin/mc admin user add localminio $${ORACLE_ID} $${ORACLE_KEY} - /usr/bin/mc admin policy set localminio fullaccess user=$${ORACLE_ID} - -volumes: - bucket-data: - db-data: diff --git a/docker/mobile/Dockerfile b/docker/mobile/Dockerfile new file mode 100644 index 000000000..ca4ef23c9 --- /dev/null +++ b/docker/mobile/Dockerfile @@ -0,0 +1,94 @@ +FROM rust:latest AS deps +# apt stuff +RUN apt-get update && apt-get install -y \ + gcc \ + curl \ + protobuf-compiler \ + pkg-config \ + openssl \ + libssl-dev +# Copy deps +COPY custom_tracing/ ./custom_tracing/ +COPY db_store/ ./db_store/ +COPY file_store/ ./file_store/ +COPY metrics/ ./metrics/ +COPY price/ ./price/ +COPY reward_scheduler/ ./reward_scheduler/ +COPY solana/ ./solana/ +COPY task_manager/ ./task_manager/ +COPY Cargo.toml Cargo.toml +COPY Cargo.lock Cargo.lock +# Copy service/binary cargo files for stub builds +COPY ingest/Cargo.toml ./ingest/Cargo.toml +COPY mobile_config/Cargo.toml ./mobile_config/Cargo.toml +COPY mobile_packet_verifier/Cargo.toml ./mobile_packet_verifier/Cargo.toml +COPY mobile_verifier/Cargo.toml ./mobile_verifier/Cargo.toml +COPY reward_index/Cargo.toml ./reward_index/Cargo.toml + +# Create a dummy project files to build deps around +RUN bash -c 'mkdir {ingest,mobile_config,mobile_packet_verifier,mobile_verifier,reward_index}/src' \ + && echo "fn main() {}" > ./ingest/src/main.rs \ + && echo "fn main() {}" > ./mobile_config/src/main.rs \ + && echo "fn main() {}" > ./mobile_packet_verifier/src/main.rs \ + && echo "fn main() {}" > ./mobile_verifier/src/main.rs \ + && echo "fn main() {}" > ./reward_index/src/main.rs \ + # Remove unused workspace members to avoid compile error on missing members + && sed -i \ + -e '/boost_manager/d' \ + -e '/denylist/d' \ + -e '/iot_config/d' \ + -e '/iot_packet_verifier/d' \ + -e '/iot_verifier/d' \ + -e '/poc_entropy/d' \ + -e '/mobile_config_cli/d' \ + -e '/test_mobile/d' \ + Cargo.toml +# Enable sparse registry to avoid crates indexing infinite loop +ENV CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse +# Build deps releases +RUN cargo build --release + +# Build ingest release +FROM deps as builder-ingest +COPY ingest ./ingest/ +RUN cargo build --package ingest --release + +# Build the mobile-config release +FROM deps as builder-mobile_config +COPY mobile_config ./mobile_config/ +RUN cargo build --package mobile-config --release + +# Build mobile-packet-verifier release +FROM builder-mobile_config as builder-mobile_packet_verifier +COPY mobile_packet_verifier ./mobile_packet_verifier/ +RUN cargo build --package mobile-packet-verifier --release + +# Build mobile-verifier release +FROM builder-mobile_config as builder-mobile_verifier +COPY mobile_verifier ./mobile_verifier/ +RUN cargo build --package mobile-verifier --release + +# Build reward-index release +FROM deps as builder-reward_index +COPY reward_index ./reward_index/ +RUN cargo build --package reward-index --release + +# Package Runners +FROM debian:bookworm-slim AS runner +COPY --from=builder-ingest ./target/release/ingest /tmp/ingest +COPY --from=builder-mobile_config ./target/release/mobile-config /tmp/mobile-config +COPY --from=builder-mobile_packet_verifier ./target/release/mobile-packet-verifier /tmp/mobile-packet-verifier +COPY --from=builder-mobile_verifier ./target/release/mobile-verifier /tmp/mobile-verifier +COPY --from=builder-reward_index ./target/release/reward-index /tmp/reward-index +COPY --from=deps ./target/release/price /tmp/price + +# Runners +FROM debian:bookworm-slim +ARG PACKAGE +RUN apt-get update && apt-get install -y \ + libssl-dev \ + ca-certificates +# $PACKAGE via build args +COPY --from=runner /tmp/$PACKAGE /opt/$PACKAGE/bin/$PACKAGE +# $PACKAGE via environment +CMD /opt/$PACKAGE/bin/$PACKAGE -c /opt/$PACKAGE/etc/settings.toml server \ No newline at end of file diff --git a/docker/mobile/docker-compose.yml b/docker/mobile/docker-compose.yml new file mode 100644 index 000000000..5d1c45584 --- /dev/null +++ b/docker/mobile/docker-compose.yml @@ -0,0 +1,46 @@ +name: mobile +services: + + postgres: + image: postgres:14-alpine + restart: unless-stopped + environment: + - POSTGRES_USER=postgres + - POSTGRES_PASSWORD=postgres + ports: + - 5432:5432 + volumes: + - postgres-data:/var/lib/postgresql/data + - ./postgres:/docker-entrypoint-initdb.d + + localstack: + image: localstack/localstack:stable + environment: + - AWS_DEFAULT_REGION=us-east-1 + - SERVICES=s3 + ports: + - 4566:4566 + volumes: + - localstack-data:/var/lib/localstack + - ./localstack/init-s3.sh:/etc/localstack/init/ready.d/init-s3.sh + + ingest: + build: + context: ../.. + dockerfile: ./Dockerfile + args: + - PACKAGE=ingest + depends_on: + localstack: + condition: service_healthy + stop_grace_period: 1s + environment: + - PACKAGE=ingest + ports: + - 9080:9080 + volumes: + - ./settings/ingest.toml:/opt/ingest/etc/settings.toml + +volumes: + postgres-data: + localstack-data: \ No newline at end of file diff --git a/docker/mobile/localstack/init-s3.sh b/docker/mobile/localstack/init-s3.sh new file mode 100755 index 000000000..60ea84f9e --- /dev/null +++ b/docker/mobile/localstack/init-s3.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +echo "Init localstack s3" +awslocal s3 mb s3://mobile-ingest +awslocal s3 mb s3://mobile-verifier +awslocal s3 mb s3://mobile-packet-verifier +awslocal s3 mb s3://mobile-price diff --git a/docker/mobile/postgres/001-init-dbs.sql b/docker/mobile/postgres/001-init-dbs.sql new file mode 100644 index 000000000..425122215 --- /dev/null +++ b/docker/mobile/postgres/001-init-dbs.sql @@ -0,0 +1,43 @@ +create database iot_config with owner = postgres encoding = 'UTF8' lc_collate = 'en_US.utf8' lc_ctype = 'en_US.utf8' tablespace = pg_default connection +limit + = -1; + +create database iot_metadata with owner = postgres encoding = 'UTF8' lc_collate = 'en_US.utf8' lc_ctype = 'en_US.utf8' tablespace = pg_default connection +limit + = -1; + +create database mobile_index with owner = postgres encoding = 'UTF8' lc_collate = 'en_US.utf8' lc_ctype = 'en_US.utf8' tablespace = pg_default connection +limit + = -1; + +create database iot_index with owner = postgres encoding = 'UTF8' lc_collate = 'en_US.utf8' lc_ctype = 'en_US.utf8' tablespace = pg_default connection +limit + = -1; + +create database mobile_verifier with owner = postgres encoding = 'UTF8' lc_collate = 'en_US.utf8' lc_ctype = 'en_US.utf8' tablespace = pg_default connection +limit + = -1; + +create database iot_verifier with owner = postgres encoding = 'UTF8' lc_collate = 'en_US.utf8' lc_ctype = 'en_US.utf8' tablespace = pg_default connection +limit + = -1; + +create database mobile_config with owner = postgres encoding = 'UTF8' lc_collate = 'en_US.utf8' lc_ctype = 'en_US.utf8' tablespace = pg_default connection +limit + = -1; + +create database mobile_metadata with owner = postgres encoding = 'UTF8' lc_collate = 'en_US.utf8' lc_ctype = 'en_US.utf8' tablespace = pg_default connection +limit + = -1; + +create database iot_packet_verifier with owner = postgres encoding = 'UTF8' lc_collate = 'en_US.utf8' lc_ctype = 'en_US.utf8' tablespace = pg_default connection +limit + = -1; + +create database mobile_packet_verifier with owner = postgres encoding = 'UTF8' lc_collate = 'en_US.utf8' lc_ctype = 'en_US.utf8' tablespace = pg_default connection +limit + = -1; + +create database mapperingestor_db with owner = postgres encoding = 'UTF8' lc_collate = 'en_US.utf8' lc_ctype = 'en_US.utf8' tablespace = pg_default connection +limit + = -1; \ No newline at end of file diff --git a/docker/mobile/settings/ingest.toml b/docker/mobile/settings/ingest.toml new file mode 100644 index 000000000..2780021c8 --- /dev/null +++ b/docker/mobile/settings/ingest.toml @@ -0,0 +1,15 @@ +log = "ingest=debug,file_store=info" +mode = "mobile" +token = "api-token" +listen = "0.0.0.0:9080" +cache = "/opt/ingest/data" +network = "mainnet" +session_key_timeout = "30 minutes" + +[output] +bucket = "mobile-ingest" +region = "us-east-1" +endpoint = "http://s3:4566" + +[metrics] +endpoint = "0.0.0.0:19000" From 5a34a1682c78ac2e6a1c5fbfa07b144c6a2c6558 Mon Sep 17 00:00:00 2001 From: Macpie Date: Tue, 21 May 2024 16:43:35 -0700 Subject: [PATCH 02/54] Basic test mobile stack --- Cargo.lock | 8 +++++++ Cargo.toml | 3 ++- .../footfall.1717436047000.res10.h3tree | Bin 0 -> 807 bytes .../landtype.1717436047000.res10.h3tree | Bin 0 -> 807 bytes test_mobile/Cargo.toml | 11 ++++++++++ test_mobile/src/main.rs | 6 ++++++ test_mobile/tests/common/mod.rs | 20 ++++++++++++++++++ test_mobile/tests/integration_test.rs | 15 +++++++++++++ 8 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 docker/mobile/verifier/data_sets_directory/footfall.1717436047000.res10.h3tree create mode 100644 docker/mobile/verifier/data_sets_directory/landtype.1717436047000.res10.h3tree create mode 100644 test_mobile/Cargo.toml create mode 100644 test_mobile/src/main.rs create mode 100644 test_mobile/tests/common/mod.rs create mode 100644 test_mobile/tests/integration_test.rs diff --git a/Cargo.lock b/Cargo.lock index 43726fc94..e0fe5df5a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7847,6 +7847,14 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "test-mobile" +version = "0.1.0" +dependencies = [ + "anyhow", + "tokio", +] + [[package]] name = "textwrap" version = "0.11.0" diff --git a/Cargo.toml b/Cargo.toml index a858438fa..69b6d3806 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,7 +23,8 @@ members = [ "reward_scheduler", "solana", "task_manager", - "hex_assignments" + "hex_assignments", + "test_mobile", ] resolver = "2" diff --git a/docker/mobile/verifier/data_sets_directory/footfall.1717436047000.res10.h3tree b/docker/mobile/verifier/data_sets_directory/footfall.1717436047000.res10.h3tree new file mode 100644 index 0000000000000000000000000000000000000000..0238baadc98c3d3f24274b498d5752916bed4e63 GIT binary patch literal 807 zcmc~uttcrr$NM75OE$vIBG#5gCoO%>mZQ}k3i&i5OLrIh&=KcM1BPk kjzGA9i5bY^0uc*1K%}GAM|lvf2qKh0geq7VWHt~30A)2KvH$=8 literal 0 HcmV?d00001 diff --git a/docker/mobile/verifier/data_sets_directory/landtype.1717436047000.res10.h3tree b/docker/mobile/verifier/data_sets_directory/landtype.1717436047000.res10.h3tree new file mode 100644 index 0000000000000000000000000000000000000000..c6267c6d1007b37cbc8b6cc6080c5c59d9373f7c GIT binary patch literal 807 zcmc~uttcrr$NM75OE$vIC6oZk)w^H&4KG6kqeJN8T)12F)C^(A5e literal 0 HcmV?d00001 diff --git a/test_mobile/Cargo.toml b/test_mobile/Cargo.toml new file mode 100644 index 000000000..95c091a74 --- /dev/null +++ b/test_mobile/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "test-mobile" +version = "0.1.0" +description = "Test All" +edition.workspace = true +authors.workspace = true +license.workspace = true + +[dependencies] +anyhow = { workspace = true } +tokio = { workspace = true } diff --git a/test_mobile/src/main.rs b/test_mobile/src/main.rs new file mode 100644 index 000000000..41640044f --- /dev/null +++ b/test_mobile/src/main.rs @@ -0,0 +1,6 @@ +use anyhow::Result; + +#[tokio::main] +async fn main() -> Result<()> { + Ok(()) +} diff --git a/test_mobile/tests/common/mod.rs b/test_mobile/tests/common/mod.rs new file mode 100644 index 000000000..38f95a490 --- /dev/null +++ b/test_mobile/tests/common/mod.rs @@ -0,0 +1,20 @@ +use anyhow::{bail, Result}; +use tokio::process::Command; + +pub async fn setup() -> Result { + let up_output = Command::new("docker") + .current_dir("../docker/mobile/") + .arg("compose") + .arg("up") + .arg("-d") + .output() + .await?; + + if up_output.status.success() { + let stdout = String::from_utf8(up_output.stdout)?; + Ok(stdout) + } else { + let stderr = String::from_utf8(up_output.stderr)?; + bail!(stderr) + } +} diff --git a/test_mobile/tests/integration_test.rs b/test_mobile/tests/integration_test.rs new file mode 100644 index 000000000..4f67ecbd4 --- /dev/null +++ b/test_mobile/tests/integration_test.rs @@ -0,0 +1,15 @@ +use anyhow::Result; + +mod common; + +#[tokio::test] +async fn main() -> Result<()> { + tokio::spawn(async move { + match common::setup().await { + Ok(_) => {} + Err(e) => panic!("{:?}", e), + } + }); + + Ok(()) +} From 4d5c74a819e2f8b0a9dfc5d112978a70e8a03836 Mon Sep 17 00:00:00 2001 From: Macpie Date: Wed, 22 May 2024 15:28:50 -0700 Subject: [PATCH 03/54] Add mobile config --- docker/mobile/Dockerfile | 20 +++++----- docker/mobile/docker-compose.yml | 21 ++++++++++- .../ingest.toml => ingest/settings.toml} | 6 +-- docker/mobile/mobile_config/keypair.bin | 1 + docker/mobile/mobile_config/settings.toml | 15 ++++++++ iot_config.Dockerfile | 37 ------------------- mobile_config.Dockerfile | 36 ------------------ mobile_config/src/main.rs | 2 + 8 files changed, 50 insertions(+), 88 deletions(-) rename docker/mobile/{settings/ingest.toml => ingest/settings.toml} (73%) create mode 100644 docker/mobile/mobile_config/keypair.bin create mode 100644 docker/mobile/mobile_config/settings.toml delete mode 100644 iot_config.Dockerfile delete mode 100644 mobile_config.Dockerfile diff --git a/docker/mobile/Dockerfile b/docker/mobile/Dockerfile index ca4ef23c9..c92dd0ef2 100644 --- a/docker/mobile/Dockerfile +++ b/docker/mobile/Dockerfile @@ -49,37 +49,37 @@ ENV CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse RUN cargo build --release # Build ingest release -FROM deps as builder-ingest +FROM deps as builder_ingest COPY ingest ./ingest/ RUN cargo build --package ingest --release # Build the mobile-config release -FROM deps as builder-mobile_config +FROM deps as builder_mobile_config COPY mobile_config ./mobile_config/ RUN cargo build --package mobile-config --release # Build mobile-packet-verifier release -FROM builder-mobile_config as builder-mobile_packet_verifier +FROM builder_mobile_config as builder_mobile_packet_verifier COPY mobile_packet_verifier ./mobile_packet_verifier/ RUN cargo build --package mobile-packet-verifier --release # Build mobile-verifier release -FROM builder-mobile_config as builder-mobile_verifier +FROM builder_mobile_config as builder_mobile_verifier COPY mobile_verifier ./mobile_verifier/ RUN cargo build --package mobile-verifier --release # Build reward-index release -FROM deps as builder-reward_index +FROM deps as builder_reward_index COPY reward_index ./reward_index/ RUN cargo build --package reward-index --release # Package Runners FROM debian:bookworm-slim AS runner -COPY --from=builder-ingest ./target/release/ingest /tmp/ingest -COPY --from=builder-mobile_config ./target/release/mobile-config /tmp/mobile-config -COPY --from=builder-mobile_packet_verifier ./target/release/mobile-packet-verifier /tmp/mobile-packet-verifier -COPY --from=builder-mobile_verifier ./target/release/mobile-verifier /tmp/mobile-verifier -COPY --from=builder-reward_index ./target/release/reward-index /tmp/reward-index +COPY --from=builder_ingest ./target/release/ingest /tmp/ingest +COPY --from=builder_mobile_config ./target/release/mobile-config /tmp/mobile-config +COPY --from=builder_mobile_packet_verifier ./target/release/mobile-packet-verifier /tmp/mobile-packet-verifier +COPY --from=builder_mobile_verifier ./target/release/mobile-verifier /tmp/mobile-verifier +COPY --from=builder_reward_index ./target/release/reward-index /tmp/reward-index COPY --from=deps ./target/release/price /tmp/price # Runners diff --git a/docker/mobile/docker-compose.yml b/docker/mobile/docker-compose.yml index 5d1c45584..78633a3c7 100644 --- a/docker/mobile/docker-compose.yml +++ b/docker/mobile/docker-compose.yml @@ -27,7 +27,7 @@ services: ingest: build: context: ../.. - dockerfile: ./Dockerfile + dockerfile: ./docker/mobile/Dockerfile args: - PACKAGE=ingest depends_on: @@ -39,7 +39,24 @@ services: ports: - 9080:9080 volumes: - - ./settings/ingest.toml:/opt/ingest/etc/settings.toml + - ./ingest/settings.toml:/opt/ingest/etc/settings.toml + + mobile_config: + build: + context: ../.. + dockerfile: ./docker/mobile/Dockerfile + args: + - PACKAGE=mobile-config + depends_on: + - postgres + stop_grace_period: 1s + environment: + - PACKAGE=mobile-config + ports: + - 9081:9081 + volumes: + - ./mobile_config/settings.toml:/opt/mobile-config/etc/settings.toml + - ./mobile_config/keypair.bin:/opt/mobile-config/etc/keypair.bin volumes: postgres-data: diff --git a/docker/mobile/settings/ingest.toml b/docker/mobile/ingest/settings.toml similarity index 73% rename from docker/mobile/settings/ingest.toml rename to docker/mobile/ingest/settings.toml index 2780021c8..376cc1260 100644 --- a/docker/mobile/settings/ingest.toml +++ b/docker/mobile/ingest/settings.toml @@ -1,10 +1,10 @@ -log = "ingest=debug,file_store=info" +log = "ingest=debug,file_store=info,custom_tracing=info" mode = "mobile" -token = "api-token" -listen = "0.0.0.0:9080" +listen_addr = "0.0.0.0:9080" cache = "/opt/ingest/data" network = "mainnet" session_key_timeout = "30 minutes" +token = "api-token" [output] bucket = "mobile-ingest" diff --git a/docker/mobile/mobile_config/keypair.bin b/docker/mobile/mobile_config/keypair.bin new file mode 100644 index 000000000..c5538bc9e --- /dev/null +++ b/docker/mobile/mobile_config/keypair.bin @@ -0,0 +1 @@ +p2 }ghD(Zd CMW4nU"} լ+{S \ No newline at end of file diff --git a/docker/mobile/mobile_config/settings.toml b/docker/mobile/mobile_config/settings.toml new file mode 100644 index 000000000..8f57e1c28 --- /dev/null +++ b/docker/mobile/mobile_config/settings.toml @@ -0,0 +1,15 @@ +log = "mobile_config=debug,file_store=info,custom_tracing=info" +listen = "0.0.0.0:9081" +signing_keypair = "/opt/mobile-config/etc/keypair.bin" +admin_pubkey = "131kC5gTPFfTyzziHbh2PWz2VSdF4gDvhoC5vqCz25N7LFtDocF" + +[database] +url = "postgres://postgres:postgres@postgres:5432/mobile_config" +max_connections = 10 + +[metadata] +url = "postgres://postgres:postgres@postgres:5432/mobile_metadata" +max_connections = 10 + +[metrics] +endpoint = "0.0.0.0:19000" diff --git a/iot_config.Dockerfile b/iot_config.Dockerfile deleted file mode 100644 index 4017826f9..000000000 --- a/iot_config.Dockerfile +++ /dev/null @@ -1,37 +0,0 @@ -FROM rust:1.70 AS builder - -RUN apt-get update && apt-get install -y protobuf-compiler - -# Copy cargo file and workspace dependency crates to cache build -COPY Cargo.toml Cargo.lock ./ -COPY db_store ./db_store/ -COPY file_store ./file_store/ -COPY task_manager ./task_manager/ -COPY metrics ./metrics/ -COPY iot_config/Cargo.toml ./iot_config/Cargo.toml - -# Enable sparse registry to avoid crates indexing infinite loop -ENV CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse - -RUN mkdir ./iot_config/src \ - # Create a dummy project file to build deps around - && echo "fn main() {}" > ./iot_config/src/main.rs \ - # Remove unused members of the workspace to avoid compile error on missing members - && sed -i -e '/ingest/d' -e '/mobile_config/d' -e '/mobile_verifier/d' \ - -e '/poc_entropy/d' -e '/iot_verifier/d' -e '/price/d' \ - -e '/reward_index/d' -e '/reward_scheduler/d' -e '/denylist/d' \ - -e '/iot_packet_verifier/d' -e '/solana/d' -e '/mobile_packet_verifier/d' \ - -e '/mobile_config_cli/d' -e '/boost_manager/d' \ - Cargo.toml \ - && cargo build --package iot-config --release - -COPY iot_config ./iot_config/ -RUN cargo build --package iot-config --release - -FROM debian:bullseye-slim - -COPY --from=builder ./target/release/iot-config /opt/iot_config/bin/iot-config - -EXPOSE 8080 - -CMD ["/opt/iot_config/bin/iot-config", "server"] diff --git a/mobile_config.Dockerfile b/mobile_config.Dockerfile deleted file mode 100644 index 1cc10c591..000000000 --- a/mobile_config.Dockerfile +++ /dev/null @@ -1,36 +0,0 @@ -FROM rust:1.70 as builder - -RUN apt-get update && apt-get install -y protobuf-compiler - -# Copy cargo file and workspace dependency crates to cache build -COPY Cargo.toml Cargo.lock ./ -COPY db_store ./db_store/ -COPY file_store ./file_store/ -COPY metrics ./metrics/ -COPY task_manager ./task_manager/ -COPY mobile_config/Cargo.toml ./mobile_config/Cargo.toml - -# Enable sparse registry to avoid crates indexing infinite loop -ENV CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse - -RUN mkdir ./mobile_config/src \ - # Create a dummy project file to build deps around - && echo "fn main() {}" > ./mobile_config/src/main.rs \ - && sed -i -e '/ingest/d' -e '/iot_config/d' -e '/mobile_verifier/d' \ - -e '/poc_entropy/d' -e '/iot_verifier/d' -e '/price/d' \ - -e '/reward_index/d' -e '/reward_scheduler/d' -e '/denylist/d' \ - -e '/iot_packet_verifier/d' -e '/solana/d' -e '/mobile_packet_verifier/d' \ - -e '/mobile_config_cli/d' \ - Cargo.toml \ - && cargo build --package mobile-config --release - -COPY mobile_config ./mobile_config/ -RUN cargo build --package mobile-config --release - -FROM debian:bullseye-slim - -COPY --from=builder ./target/release/mobile-config /opt/mobile_config/bin/mobile-config - -EXPOSE 8090 - -CMD ["/opt/mobile_config/bin/mobile-config", "server"] diff --git a/mobile_config/src/main.rs b/mobile_config/src/main.rs index d12fd5233..913404a27 100644 --- a/mobile_config/src/main.rs +++ b/mobile_config/src/main.rs @@ -102,6 +102,8 @@ impl Daemon { hex_boosting_svc, }; + tracing::info!("grpc listening on {listen_addr}"); + TaskManager::builder() .add_task(grpc_server) .build() From 8c33ce4ad172bcb6d4543a718cd563770fa07f97 Mon Sep 17 00:00:00 2001 From: Macpie Date: Wed, 22 May 2024 15:30:26 -0700 Subject: [PATCH 04/54] Add compose up and down --- Cargo.lock | 2 ++ test_mobile/Cargo.toml | 4 ++- test_mobile/src/main.rs | 7 ++--- test_mobile/tests/common/mod.rs | 20 --------------- test_mobile/tests/docker/mod.rs | 37 +++++++++++++++++++++++++++ test_mobile/tests/integration_test.rs | 22 +++++++++++----- 6 files changed, 59 insertions(+), 33 deletions(-) delete mode 100644 test_mobile/tests/common/mod.rs create mode 100644 test_mobile/tests/docker/mod.rs diff --git a/Cargo.lock b/Cargo.lock index e0fe5df5a..50811d325 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7852,6 +7852,8 @@ name = "test-mobile" version = "0.1.0" dependencies = [ "anyhow", + "helium-crypto", + "rand 0.8.5", "tokio", ] diff --git a/test_mobile/Cargo.toml b/test_mobile/Cargo.toml index 95c091a74..800c33bac 100644 --- a/test_mobile/Cargo.toml +++ b/test_mobile/Cargo.toml @@ -6,6 +6,8 @@ edition.workspace = true authors.workspace = true license.workspace = true -[dependencies] +[dev-dependencies] anyhow = { workspace = true } tokio = { workspace = true } +rand = { workspace = true } +helium-crypto = { workspace = true } diff --git a/test_mobile/src/main.rs b/test_mobile/src/main.rs index 41640044f..70fecd714 100644 --- a/test_mobile/src/main.rs +++ b/test_mobile/src/main.rs @@ -1,6 +1,3 @@ -use anyhow::Result; - -#[tokio::main] -async fn main() -> Result<()> { - Ok(()) +fn main() -> () { + () } diff --git a/test_mobile/tests/common/mod.rs b/test_mobile/tests/common/mod.rs deleted file mode 100644 index 38f95a490..000000000 --- a/test_mobile/tests/common/mod.rs +++ /dev/null @@ -1,20 +0,0 @@ -use anyhow::{bail, Result}; -use tokio::process::Command; - -pub async fn setup() -> Result { - let up_output = Command::new("docker") - .current_dir("../docker/mobile/") - .arg("compose") - .arg("up") - .arg("-d") - .output() - .await?; - - if up_output.status.success() { - let stdout = String::from_utf8(up_output.stdout)?; - Ok(stdout) - } else { - let stderr = String::from_utf8(up_output.stderr)?; - bail!(stderr) - } -} diff --git a/test_mobile/tests/docker/mod.rs b/test_mobile/tests/docker/mod.rs new file mode 100644 index 000000000..ad890835c --- /dev/null +++ b/test_mobile/tests/docker/mod.rs @@ -0,0 +1,37 @@ +use anyhow::{bail, Result}; +use tokio::process::Command; + +pub async fn up() -> Result { + let up_output = Command::new("docker") + .current_dir("../docker/mobile/") + .arg("compose") + .arg("up") + .arg("-d") + .output() + .await?; + + if up_output.status.success() { + let stdout = String::from_utf8(up_output.stdout)?; + Ok(stdout) + } else { + let stderr = String::from_utf8(up_output.stderr)?; + bail!(stderr) + } +} + +pub async fn down() -> Result { + let up_output = Command::new("docker") + .current_dir("../docker/mobile/") + .arg("compose") + .arg("down") + .output() + .await?; + + if up_output.status.success() { + let stdout = String::from_utf8(up_output.stdout)?; + Ok(stdout) + } else { + let stderr = String::from_utf8(up_output.stderr)?; + bail!(stderr) + } +} diff --git a/test_mobile/tests/integration_test.rs b/test_mobile/tests/integration_test.rs index 4f67ecbd4..6422fbc1b 100644 --- a/test_mobile/tests/integration_test.rs +++ b/test_mobile/tests/integration_test.rs @@ -1,15 +1,23 @@ use anyhow::Result; +use helium_crypto::{ed25519::Keypair, Network::MainNet}; +use rand::rngs::OsRng; +use std::time::Duration; +use tokio::time::sleep; -mod common; +mod docker; #[tokio::test] async fn main() -> Result<()> { - tokio::spawn(async move { - match common::setup().await { - Ok(_) => {} - Err(e) => panic!("{:?}", e), - } - }); + let keypair = Keypair::generate(MainNet, &mut OsRng); + + match docker::up().await { + Ok(_) => {} + Err(e) => panic!("{:?}", e), + } + + sleep(Duration::from_secs(10)).await; + + docker::down().await?; Ok(()) } From dc37931bcd22eb263885ee81d91f158b9e52a96e Mon Sep 17 00:00:00 2001 From: Macpie Date: Wed, 22 May 2024 17:01:42 -0700 Subject: [PATCH 05/54] Add packet verifier --- Cargo.lock | 2 -- .../{mobile_config => config}/keypair.bin | 0 .../{mobile_config => config}/settings.toml | 1 + docker/mobile/docker-compose.yml | 32 ++++++++++++++--- docker/mobile/ingest/settings.toml | 2 +- docker/mobile/packet_verifier/keypair.bin | 2 ++ docker/mobile/packet_verifier/settings.toml | 34 +++++++++++++++++++ docker/mobile/postgres/001-init-dbs.sql | 2 +- test_mobile/Cargo.toml | 4 +-- test_mobile/tests/integration_test.rs | 4 --- 10 files changed, 68 insertions(+), 15 deletions(-) rename docker/mobile/{mobile_config => config}/keypair.bin (100%) rename docker/mobile/{mobile_config => config}/settings.toml (83%) create mode 100644 docker/mobile/packet_verifier/keypair.bin create mode 100644 docker/mobile/packet_verifier/settings.toml diff --git a/Cargo.lock b/Cargo.lock index 50811d325..e0fe5df5a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7852,8 +7852,6 @@ name = "test-mobile" version = "0.1.0" dependencies = [ "anyhow", - "helium-crypto", - "rand 0.8.5", "tokio", ] diff --git a/docker/mobile/mobile_config/keypair.bin b/docker/mobile/config/keypair.bin similarity index 100% rename from docker/mobile/mobile_config/keypair.bin rename to docker/mobile/config/keypair.bin diff --git a/docker/mobile/mobile_config/settings.toml b/docker/mobile/config/settings.toml similarity index 83% rename from docker/mobile/mobile_config/settings.toml rename to docker/mobile/config/settings.toml index 8f57e1c28..38c9520da 100644 --- a/docker/mobile/mobile_config/settings.toml +++ b/docker/mobile/config/settings.toml @@ -2,6 +2,7 @@ log = "mobile_config=debug,file_store=info,custom_tracing=info" listen = "0.0.0.0:9081" signing_keypair = "/opt/mobile-config/etc/keypair.bin" admin_pubkey = "131kC5gTPFfTyzziHbh2PWz2VSdF4gDvhoC5vqCz25N7LFtDocF" +# /target/release/mobile-config-cli env info --keypair=docker/mobile/config/keypair.bin [database] url = "postgres://postgres:postgres@postgres:5432/mobile_config" diff --git a/docker/mobile/docker-compose.yml b/docker/mobile/docker-compose.yml index 78633a3c7..43387b25b 100644 --- a/docker/mobile/docker-compose.yml +++ b/docker/mobile/docker-compose.yml @@ -4,6 +4,11 @@ services: postgres: image: postgres:14-alpine restart: unless-stopped + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres"] + interval: 5s + timeout: 5s + retries: 5 environment: - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres @@ -41,22 +46,41 @@ services: volumes: - ./ingest/settings.toml:/opt/ingest/etc/settings.toml - mobile_config: + config: build: context: ../.. dockerfile: ./docker/mobile/Dockerfile args: - PACKAGE=mobile-config depends_on: - - postgres + postgres: + condition: service_healthy stop_grace_period: 1s environment: - PACKAGE=mobile-config ports: - 9081:9081 volumes: - - ./mobile_config/settings.toml:/opt/mobile-config/etc/settings.toml - - ./mobile_config/keypair.bin:/opt/mobile-config/etc/keypair.bin + - ./config/settings.toml:/opt/mobile-config/etc/settings.toml + - ./config/keypair.bin:/opt/mobile-config/etc/keypair.bin + + packet_verifier: + build: + context: ../.. + dockerfile: ./docker/mobile/Dockerfile + args: + - PACKAGE=mobile-packet-verifier + depends_on: + localstack: + condition: service_healthy + config: + condition: service_started + stop_grace_period: 1s + environment: + - PACKAGE=mobile-packet-verifier + volumes: + - ./packet_verifier/settings.toml:/opt/mobile-packet-verifier/etc/settings.toml + - ./packet_verifier/keypair.bin:/opt/mobile-packet-verifier/etc/keypair.bin volumes: postgres-data: diff --git a/docker/mobile/ingest/settings.toml b/docker/mobile/ingest/settings.toml index 376cc1260..ba7c88de6 100644 --- a/docker/mobile/ingest/settings.toml +++ b/docker/mobile/ingest/settings.toml @@ -9,7 +9,7 @@ token = "api-token" [output] bucket = "mobile-ingest" region = "us-east-1" -endpoint = "http://s3:4566" +endpoint = "http://localstack:4566" [metrics] endpoint = "0.0.0.0:19000" diff --git a/docker/mobile/packet_verifier/keypair.bin b/docker/mobile/packet_verifier/keypair.bin new file mode 100644 index 000000000..dbb756a39 --- /dev/null +++ b/docker/mobile/packet_verifier/keypair.bin @@ -0,0 +1,2 @@ +4lVkbEK9=ձ/ڽjdZ r1h- +[]h \ No newline at end of file diff --git a/docker/mobile/packet_verifier/settings.toml b/docker/mobile/packet_verifier/settings.toml new file mode 100644 index 000000000..ba88bc569 --- /dev/null +++ b/docker/mobile/packet_verifier/settings.toml @@ -0,0 +1,34 @@ +log = "mobile_packet_verifier=debug,file_store=info,solana=info,custom_tracing=info" +cache = "/opt/mobile-packet-verifier/data" +enable_solana_integration = false +start_after = 0 + +[database] +url = "postgres://postgres:postgres@postgres:5432/mobile_packet_verifier" +max_connections = 10 + +[ingest] +bucket = "mobile-ingest" +region = "us-east-1" +endpoint = "http://localstack:4566" + +[output] +bucket = "mobile-packet-verifier" +region = "us-east-1" +endpoint = "http://localstack:4566" + +[metrics] +endpoint = "0.0.0.0:19000" + +[solana] +rpc_url = "http://localhost:8899" +burn_keypair = "/opt/mobile-packet-verifier/etc/burn.key" +cluster = "devnet" +dc_mint = "dcuc8Amr83Wz27ZkQ2K9NS6r8zRpf1J6cvArEBDZDmm" +dnt_mint = "mb1eu7TzEc71KxDpsmsKoucSSuuoGLv1drys1oP2jh6" + +[config_client] +url = "http://config:9081/" +signing_keypair = "/opt/mobile-packet-verifier/etc/keypair.bin" +config_pubkey = "14c5dZUZgFEVcocB3mfcjhXEVqDuafnpzghgyr2i422okXVByPr" +# /target/release/mobile-config-cli env info --keypair=docker/mobile/packet_verifier/keypair.bin diff --git a/docker/mobile/postgres/001-init-dbs.sql b/docker/mobile/postgres/001-init-dbs.sql index 425122215..0e6dc251e 100644 --- a/docker/mobile/postgres/001-init-dbs.sql +++ b/docker/mobile/postgres/001-init-dbs.sql @@ -38,6 +38,6 @@ create database mobile_packet_verifier with owner = postgres encoding = 'UTF8' l limit = -1; -create database mapperingestor_db with owner = postgres encoding = 'UTF8' lc_collate = 'en_US.utf8' lc_ctype = 'en_US.utf8' tablespace = pg_default connection +create database mapperingestor with owner = postgres encoding = 'UTF8' lc_collate = 'en_US.utf8' lc_ctype = 'en_US.utf8' tablespace = pg_default connection limit = -1; \ No newline at end of file diff --git a/test_mobile/Cargo.toml b/test_mobile/Cargo.toml index 800c33bac..e5b0e6c1a 100644 --- a/test_mobile/Cargo.toml +++ b/test_mobile/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "test-mobile" version = "0.1.0" -description = "Test All" +description = "Test Mobile Stack" edition.workspace = true authors.workspace = true license.workspace = true @@ -9,5 +9,3 @@ license.workspace = true [dev-dependencies] anyhow = { workspace = true } tokio = { workspace = true } -rand = { workspace = true } -helium-crypto = { workspace = true } diff --git a/test_mobile/tests/integration_test.rs b/test_mobile/tests/integration_test.rs index 6422fbc1b..0ad239b30 100644 --- a/test_mobile/tests/integration_test.rs +++ b/test_mobile/tests/integration_test.rs @@ -1,6 +1,4 @@ use anyhow::Result; -use helium_crypto::{ed25519::Keypair, Network::MainNet}; -use rand::rngs::OsRng; use std::time::Duration; use tokio::time::sleep; @@ -8,8 +6,6 @@ mod docker; #[tokio::test] async fn main() -> Result<()> { - let keypair = Keypair::generate(MainNet, &mut OsRng); - match docker::up().await { Ok(_) => {} Err(e) => panic!("{:?}", e), From 3f4938d6865bcf7a78e5bdbdc41b156acfd774d0 Mon Sep 17 00:00:00 2001 From: Macpie Date: Wed, 22 May 2024 20:17:35 -0700 Subject: [PATCH 06/54] Add db seeder to add keys to mobile config DB --- docker/mobile/docker-compose.yml | 10 ++++++++++ docker/mobile/postgres_seeder/Dockerfile | 16 +++++++++++++++ .../postgres_seeder/mobile_config_pubkeys.sql | 17 ++++++++++++++++ docker/mobile/postgres_seeder/run.sh | 20 +++++++++++++++++++ 4 files changed, 63 insertions(+) create mode 100644 docker/mobile/postgres_seeder/Dockerfile create mode 100644 docker/mobile/postgres_seeder/mobile_config_pubkeys.sql create mode 100755 docker/mobile/postgres_seeder/run.sh diff --git a/docker/mobile/docker-compose.yml b/docker/mobile/docker-compose.yml index 43387b25b..5d4afb28d 100644 --- a/docker/mobile/docker-compose.yml +++ b/docker/mobile/docker-compose.yml @@ -18,6 +18,16 @@ services: - postgres-data:/var/lib/postgresql/data - ./postgres:/docker-entrypoint-initdb.d + postgres_seeder: + build: + context: ../.. + dockerfile: ./docker/mobile/postgres_seeder/Dockerfile + environment: + - DB_URL=postgres://postgres:postgres@postgres:5432 + depends_on: + postgres: + condition: service_healthy + localstack: image: localstack/localstack:stable environment: diff --git a/docker/mobile/postgres_seeder/Dockerfile b/docker/mobile/postgres_seeder/Dockerfile new file mode 100644 index 000000000..6f88c048e --- /dev/null +++ b/docker/mobile/postgres_seeder/Dockerfile @@ -0,0 +1,16 @@ +FROM rust:latest + +ENV DB_URL=postgres://postgres:postgres@postgres:5432 + +RUN cargo install sqlx-cli --no-default-features --features native-tls,postgres + +COPY ./mobile_config/migrations /mobile_config/migrations +COPY ./mobile_packet_verifier/migrations /mobile_packet_verifier/migrations +COPY ./mobile_verifier/migrations /mobile_verifier/migrations +COPY ./reward_index/migrations /reward_index/migrations + +COPY ./docker/mobile/postgres_seeder/mobile_config_pubkeys.sql /mobile_config/migrations/20240522174900_mobile_config_pubkeys.sql + +COPY ./docker/mobile/postgres_seeder/run.sh /run.sh + +CMD ["/run.sh"] \ No newline at end of file diff --git a/docker/mobile/postgres_seeder/mobile_config_pubkeys.sql b/docker/mobile/postgres_seeder/mobile_config_pubkeys.sql new file mode 100644 index 000000000..167282b24 --- /dev/null +++ b/docker/mobile/postgres_seeder/mobile_config_pubkeys.sql @@ -0,0 +1,17 @@ +INSERT INTO + registered_keys (pubkey, key_role, created_at, updated_at, name) +VALUES + ( + '14c5dZUZgFEVcocB3mfcjhXEVqDuafnpzghgyr2i422okXVByPr', + 'oracle', + TIMESTAMP '2023-10-31T22:00:00.0+00', + TIMESTAMP '2023-10-31T22:00:00.0+00', + 'packet_verifier' + ), + ( + '131kC5gTPFfTyzziHbh2PWz2VSdF4gDvhoC5vqCz25N7LFtDocF', + 'administrator', + TIMESTAMP '2023-10-31T21:00:00.0+00', + TIMESTAMP '2023-10-31T21:00:00.0+00', + 'config' + ); \ No newline at end of file diff --git a/docker/mobile/postgres_seeder/run.sh b/docker/mobile/postgres_seeder/run.sh new file mode 100755 index 000000000..ecd915ef2 --- /dev/null +++ b/docker/mobile/postgres_seeder/run.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +echo "#############################################" +echo "Running mobile-config migrations" +sqlx migrate run --database-url $DB_URL/mobile_config --source /mobile_config/migrations +echo "#############################################" + +echo "Running mobile-packet-verifier migrations" +sqlx migrate run --database-url $DB_URL/mobile_packet_verifier --source /mobile_packet_verifier/migrations +echo "#############################################" + +echo "Running mobile-verifier migrations" +sqlx migrate run --database-url $DB_URL/mobile_verifier --source /mobile_verifier/migrations +echo "#############################################" + +echo "Running mobile reward-index migrations" +sqlx migrate run --database-url $DB_URL/mobile_index --source /reward_index/migrations +echo "#############################################" + +echo "Done" From 3278ba155c5467108b14a471105a5e1875811aaa Mon Sep 17 00:00:00 2001 From: Macpie Date: Wed, 22 May 2024 20:28:00 -0700 Subject: [PATCH 07/54] Only start config when seeder is done --- docker/mobile/docker-compose.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/mobile/docker-compose.yml b/docker/mobile/docker-compose.yml index 5d4afb28d..0866f6201 100644 --- a/docker/mobile/docker-compose.yml +++ b/docker/mobile/docker-compose.yml @@ -63,8 +63,8 @@ services: args: - PACKAGE=mobile-config depends_on: - postgres: - condition: service_healthy + postgres_seeder: + condition: service_completed_successfully stop_grace_period: 1s environment: - PACKAGE=mobile-config From ff8d81af3a4ee7b97efd07f2cfce552ca1064244 Mon Sep 17 00:00:00 2001 From: Macpie Date: Thu, 23 May 2024 13:51:09 -0700 Subject: [PATCH 08/54] Fixup seeder and packet verifier startup --- docker/mobile/docker-compose.yml | 10 +++++++++- docker/mobile/packet_verifier/settings.toml | 7 ------- docker/mobile/postgres_seeder/Dockerfile | 5 ++++- .../pubkeys.sql} | 0 docker/mobile/postgres_seeder/run.sh | 17 ++++++++++++----- 5 files changed, 25 insertions(+), 14 deletions(-) rename docker/mobile/postgres_seeder/{mobile_config_pubkeys.sql => mobile_config/pubkeys.sql} (100%) diff --git a/docker/mobile/docker-compose.yml b/docker/mobile/docker-compose.yml index 0866f6201..840047d87 100644 --- a/docker/mobile/docker-compose.yml +++ b/docker/mobile/docker-compose.yml @@ -23,7 +23,9 @@ services: context: ../.. dockerfile: ./docker/mobile/postgres_seeder/Dockerfile environment: - - DB_URL=postgres://postgres:postgres@postgres:5432 + - POSTGRES_USER=postgres + - POSTGRES_PASSWORD=postgres + - POSTGRES_HOST=postgres depends_on: postgres: condition: service_healthy @@ -51,6 +53,9 @@ services: stop_grace_period: 1s environment: - PACKAGE=ingest + - AWS_ACCESS_KEY_ID=AWS_ACCESS_KEY_ID + - AWS_SECRET_ACCESS_KEY=AWS_SECRET_ACCESS_KEY + - AWS_SESSION_TOKEN=AWS_SESSION_TOKEN ports: - 9080:9080 volumes: @@ -88,6 +93,9 @@ services: stop_grace_period: 1s environment: - PACKAGE=mobile-packet-verifier + - AWS_ACCESS_KEY_ID=AWS_ACCESS_KEY_ID + - AWS_SECRET_ACCESS_KEY=AWS_SECRET_ACCESS_KEY + - AWS_SESSION_TOKEN=AWS_SESSION_TOKEN volumes: - ./packet_verifier/settings.toml:/opt/mobile-packet-verifier/etc/settings.toml - ./packet_verifier/keypair.bin:/opt/mobile-packet-verifier/etc/keypair.bin diff --git a/docker/mobile/packet_verifier/settings.toml b/docker/mobile/packet_verifier/settings.toml index ba88bc569..247966f32 100644 --- a/docker/mobile/packet_verifier/settings.toml +++ b/docker/mobile/packet_verifier/settings.toml @@ -1,7 +1,6 @@ log = "mobile_packet_verifier=debug,file_store=info,solana=info,custom_tracing=info" cache = "/opt/mobile-packet-verifier/data" enable_solana_integration = false -start_after = 0 [database] url = "postgres://postgres:postgres@postgres:5432/mobile_packet_verifier" @@ -20,12 +19,6 @@ endpoint = "http://localstack:4566" [metrics] endpoint = "0.0.0.0:19000" -[solana] -rpc_url = "http://localhost:8899" -burn_keypair = "/opt/mobile-packet-verifier/etc/burn.key" -cluster = "devnet" -dc_mint = "dcuc8Amr83Wz27ZkQ2K9NS6r8zRpf1J6cvArEBDZDmm" -dnt_mint = "mb1eu7TzEc71KxDpsmsKoucSSuuoGLv1drys1oP2jh6" [config_client] url = "http://config:9081/" diff --git a/docker/mobile/postgres_seeder/Dockerfile b/docker/mobile/postgres_seeder/Dockerfile index 6f88c048e..3c4c9c1f7 100644 --- a/docker/mobile/postgres_seeder/Dockerfile +++ b/docker/mobile/postgres_seeder/Dockerfile @@ -2,6 +2,9 @@ FROM rust:latest ENV DB_URL=postgres://postgres:postgres@postgres:5432 +RUN apt-get update && apt-get install -y postgresql + + RUN cargo install sqlx-cli --no-default-features --features native-tls,postgres COPY ./mobile_config/migrations /mobile_config/migrations @@ -9,7 +12,7 @@ COPY ./mobile_packet_verifier/migrations /mobile_packet_verifier/migrations COPY ./mobile_verifier/migrations /mobile_verifier/migrations COPY ./reward_index/migrations /reward_index/migrations -COPY ./docker/mobile/postgres_seeder/mobile_config_pubkeys.sql /mobile_config/migrations/20240522174900_mobile_config_pubkeys.sql +COPY ./docker/mobile/postgres_seeder/mobile_config /postgres_seeder/mobile_config COPY ./docker/mobile/postgres_seeder/run.sh /run.sh diff --git a/docker/mobile/postgres_seeder/mobile_config_pubkeys.sql b/docker/mobile/postgres_seeder/mobile_config/pubkeys.sql similarity index 100% rename from docker/mobile/postgres_seeder/mobile_config_pubkeys.sql rename to docker/mobile/postgres_seeder/mobile_config/pubkeys.sql diff --git a/docker/mobile/postgres_seeder/run.sh b/docker/mobile/postgres_seeder/run.sh index ecd915ef2..b39273264 100755 --- a/docker/mobile/postgres_seeder/run.sh +++ b/docker/mobile/postgres_seeder/run.sh @@ -2,19 +2,26 @@ echo "#############################################" echo "Running mobile-config migrations" -sqlx migrate run --database-url $DB_URL/mobile_config --source /mobile_config/migrations +sqlx migrate run --database-url postgres://$POSTGRES_USER:$POSTGRES_PASSWORD@$POSTGRES_HOST:5432/mobile_config --source /mobile_config/migrations echo "#############################################" echo "Running mobile-packet-verifier migrations" -sqlx migrate run --database-url $DB_URL/mobile_packet_verifier --source /mobile_packet_verifier/migrations +sqlx migrate run --database-url postgres://$POSTGRES_USER:$POSTGRES_PASSWORD@$POSTGRES_HOST:5432/mobile_packet_verifier --source /mobile_packet_verifier/migrations echo "#############################################" echo "Running mobile-verifier migrations" -sqlx migrate run --database-url $DB_URL/mobile_verifier --source /mobile_verifier/migrations +sqlx migrate run --database-url postgres://$POSTGRES_USER:$POSTGRES_PASSWORD@$POSTGRES_HOST:5432/mobile_verifier --source /mobile_verifier/migrations echo "#############################################" echo "Running mobile reward-index migrations" -sqlx migrate run --database-url $DB_URL/mobile_index --source /reward_index/migrations +sqlx migrate run --database-url postgres://$POSTGRES_USER:$POSTGRES_PASSWORD@$POSTGRES_HOST:5432/mobile_index --source /reward_index/migrations echo "#############################################" -echo "Done" +export PGPASSWORD=$POSTGRES_PASSWORD +MOBILE_CONFIG_FILES=/postgres_seeder/mobile_config/* + +for file in $MOBILE_CONFIG_FILES; do + echo "Running $file" + psql -h $POSTGRES_HOST -U $POSTGRES_USER -d mobile_config -f $file + echo "#############################################" +done From 2283ba5fecd1360895e5125261cf86ddc9b8e301 Mon Sep 17 00:00:00 2001 From: Macpie Date: Thu, 23 May 2024 14:19:06 -0700 Subject: [PATCH 09/54] Simpler dockerfile --- docker/mobile/Dockerfile | 98 +++++++++++++--------------------------- 1 file changed, 31 insertions(+), 67 deletions(-) diff --git a/docker/mobile/Dockerfile b/docker/mobile/Dockerfile index c92dd0ef2..e87f5600a 100644 --- a/docker/mobile/Dockerfile +++ b/docker/mobile/Dockerfile @@ -1,5 +1,5 @@ -FROM rust:latest AS deps -# apt stuff +FROM rust:latest AS builder + RUN apt-get update && apt-get install -y \ gcc \ curl \ @@ -7,88 +7,52 @@ RUN apt-get update && apt-get install -y \ pkg-config \ openssl \ libssl-dev -# Copy deps -COPY custom_tracing/ ./custom_tracing/ -COPY db_store/ ./db_store/ -COPY file_store/ ./file_store/ -COPY metrics/ ./metrics/ -COPY price/ ./price/ -COPY reward_scheduler/ ./reward_scheduler/ -COPY solana/ ./solana/ -COPY task_manager/ ./task_manager/ -COPY Cargo.toml Cargo.toml -COPY Cargo.lock Cargo.lock -# Copy service/binary cargo files for stub builds -COPY ingest/Cargo.toml ./ingest/Cargo.toml -COPY mobile_config/Cargo.toml ./mobile_config/Cargo.toml -COPY mobile_packet_verifier/Cargo.toml ./mobile_packet_verifier/Cargo.toml -COPY mobile_verifier/Cargo.toml ./mobile_verifier/Cargo.toml -COPY reward_index/Cargo.toml ./reward_index/Cargo.toml -# Create a dummy project files to build deps around -RUN bash -c 'mkdir {ingest,mobile_config,mobile_packet_verifier,mobile_verifier,reward_index}/src' \ - && echo "fn main() {}" > ./ingest/src/main.rs \ - && echo "fn main() {}" > ./mobile_config/src/main.rs \ - && echo "fn main() {}" > ./mobile_packet_verifier/src/main.rs \ - && echo "fn main() {}" > ./mobile_verifier/src/main.rs \ - && echo "fn main() {}" > ./reward_index/src/main.rs \ - # Remove unused workspace members to avoid compile error on missing members - && sed -i \ - -e '/boost_manager/d' \ +# Copy Deps +COPY custom_tracing custom_tracing/ +COPY db_store db_store/ +COPY file_store file_store/ +COPY metrics metrics/ +COPY price price/ +COPY reward_scheduler reward_scheduler/ +COPY solana solana/ +COPY task_manager task_manager/ +COPY Cargo.toml Cargo.toml +COPY Cargo.lock Cargo.lock + +# Copy mobile pakages +COPY ingest ingest/ +COPY mobile_config mobile_config/ +COPY mobile_packet_verifier mobile_packet_verifier/ +COPY mobile_verifier mobile_verifier/ +COPY reward_index reward_index/ + +# Remove useless packages from toml +RUN sed -i \ -e '/denylist/d' \ -e '/iot_config/d' \ -e '/iot_packet_verifier/d' \ -e '/iot_verifier/d' \ -e '/poc_entropy/d' \ -e '/mobile_config_cli/d' \ + -e '/boost_manager/d' \ -e '/test_mobile/d' \ Cargo.toml -# Enable sparse registry to avoid crates indexing infinite loop -ENV CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse -# Build deps releases -RUN cargo build --release - -# Build ingest release -FROM deps as builder_ingest -COPY ingest ./ingest/ -RUN cargo build --package ingest --release - -# Build the mobile-config release -FROM deps as builder_mobile_config -COPY mobile_config ./mobile_config/ -RUN cargo build --package mobile-config --release - -# Build mobile-packet-verifier release -FROM builder_mobile_config as builder_mobile_packet_verifier -COPY mobile_packet_verifier ./mobile_packet_verifier/ -RUN cargo build --package mobile-packet-verifier --release -# Build mobile-verifier release -FROM builder_mobile_config as builder_mobile_verifier -COPY mobile_verifier ./mobile_verifier/ -RUN cargo build --package mobile-verifier --release - -# Build reward-index release -FROM deps as builder_reward_index -COPY reward_index ./reward_index/ -RUN cargo build --package reward-index --release +# Build releases +RUN cargo build --release # Package Runners -FROM debian:bookworm-slim AS runner -COPY --from=builder_ingest ./target/release/ingest /tmp/ingest -COPY --from=builder_mobile_config ./target/release/mobile-config /tmp/mobile-config -COPY --from=builder_mobile_packet_verifier ./target/release/mobile-packet-verifier /tmp/mobile-packet-verifier -COPY --from=builder_mobile_verifier ./target/release/mobile-verifier /tmp/mobile-verifier -COPY --from=builder_reward_index ./target/release/reward-index /tmp/reward-index -COPY --from=deps ./target/release/price /tmp/price - -# Runners FROM debian:bookworm-slim + ARG PACKAGE + RUN apt-get update && apt-get install -y \ libssl-dev \ ca-certificates + # $PACKAGE via build args -COPY --from=runner /tmp/$PACKAGE /opt/$PACKAGE/bin/$PACKAGE +COPY --from=builder ./target/release/$PACKAGE /opt/$PACKAGE/bin/$PACKAGE + # $PACKAGE via environment CMD /opt/$PACKAGE/bin/$PACKAGE -c /opt/$PACKAGE/etc/settings.toml server \ No newline at end of file From f38eb69d23f4a03b77bee79bc16414600c18109d Mon Sep 17 00:00:00 2001 From: Macpie Date: Thu, 23 May 2024 15:36:21 -0700 Subject: [PATCH 10/54] Add verifier and improve seeder --- docker/mobile/config/settings.toml | 2 +- docker/mobile/docker-compose.yml | 30 +++++++++++- docker/mobile/packet_verifier/settings.toml | 2 +- docker/mobile/postgres_seeder/Dockerfile | 5 -- .../postgres_seeder/mobile_config/pubkeys.sql | 17 ------- .../post_migration/mobile_config-pubkeys.sql | 44 +++++++++++++++++ .../post_migration/mobile_verifier-meta.sql | 29 +++++++++++ docker/mobile/postgres_seeder/run.sh | 11 +++-- docker/mobile/verifier/footfall_data_set | 0 docker/mobile/verifier/keypair.bin | Bin 0 -> 65 bytes docker/mobile/verifier/landtype_data_set | 0 docker/mobile/verifier/settings.toml | 46 ++++++++++++++++++ docker/mobile/verifier/urbanization_data_set | 0 .../verifier/usa_and_mexico_geofence_regions | 0 docker/mobile/verifier/usa_geofence_regions | 0 15 files changed, 157 insertions(+), 29 deletions(-) delete mode 100644 docker/mobile/postgres_seeder/mobile_config/pubkeys.sql create mode 100644 docker/mobile/postgres_seeder/post_migration/mobile_config-pubkeys.sql create mode 100644 docker/mobile/postgres_seeder/post_migration/mobile_verifier-meta.sql create mode 100644 docker/mobile/verifier/footfall_data_set create mode 100644 docker/mobile/verifier/keypair.bin create mode 100644 docker/mobile/verifier/landtype_data_set create mode 100644 docker/mobile/verifier/settings.toml create mode 100644 docker/mobile/verifier/urbanization_data_set create mode 100644 docker/mobile/verifier/usa_and_mexico_geofence_regions create mode 100644 docker/mobile/verifier/usa_geofence_regions diff --git a/docker/mobile/config/settings.toml b/docker/mobile/config/settings.toml index 38c9520da..6854ab978 100644 --- a/docker/mobile/config/settings.toml +++ b/docker/mobile/config/settings.toml @@ -2,7 +2,7 @@ log = "mobile_config=debug,file_store=info,custom_tracing=info" listen = "0.0.0.0:9081" signing_keypair = "/opt/mobile-config/etc/keypair.bin" admin_pubkey = "131kC5gTPFfTyzziHbh2PWz2VSdF4gDvhoC5vqCz25N7LFtDocF" -# /target/release/mobile-config-cli env info --keypair=docker/mobile/config/keypair.bin +# ./target/release/mobile-config-cli env info --keypair=docker/mobile/config/keypair.bin [database] url = "postgres://postgres:postgres@postgres:5432/mobile_config" diff --git a/docker/mobile/docker-compose.yml b/docker/mobile/docker-compose.yml index 840047d87..4cc12cd06 100644 --- a/docker/mobile/docker-compose.yml +++ b/docker/mobile/docker-compose.yml @@ -29,6 +29,8 @@ services: depends_on: postgres: condition: service_healthy + volumes: + - ./postgres_seeder/post_migration:/postgres_seeder/post_migration localstack: image: localstack/localstack:stable @@ -78,7 +80,7 @@ services: volumes: - ./config/settings.toml:/opt/mobile-config/etc/settings.toml - ./config/keypair.bin:/opt/mobile-config/etc/keypair.bin - + packet_verifier: build: context: ../.. @@ -99,6 +101,32 @@ services: volumes: - ./packet_verifier/settings.toml:/opt/mobile-packet-verifier/etc/settings.toml - ./packet_verifier/keypair.bin:/opt/mobile-packet-verifier/etc/keypair.bin + + verifier: + build: + context: ../.. + dockerfile: ./docker/mobile/Dockerfile + args: + - PACKAGE=mobile-verifier + depends_on: + localstack: + condition: service_healthy + config: + condition: service_started + stop_grace_period: 1s + environment: + - PACKAGE=mobile-verifier + - AWS_ACCESS_KEY_ID=AWS_ACCESS_KEY_ID + - AWS_SECRET_ACCESS_KEY=AWS_SECRET_ACCESS_KEY + - AWS_SESSION_TOKEN=AWS_SESSION_TOKEN + volumes: + - ./verifier/settings.toml:/opt/mobile-verifier/etc/settings.toml + - ./verifier/keypair.bin:/opt/mobile-verifier/etc/keypair.bin + - ./verifier/usa_and_mexico_geofence_regions:/opt/mobile-verifier/usa_and_mexico_geofence_regions + - ./verifier/usa_geofence_regions:/opt/mobile-verifier/usa_geofence_regions + - ./verifier/urbanization_data_set:/opt/mobile-verifier/urbanization_data_set + - ./verifier/footfall_data_set:/opt/mobile-verifier/footfall_data_set + - ./verifier/landtype_data_set:/opt/mobile-verifier/landtype_data_set volumes: postgres-data: diff --git a/docker/mobile/packet_verifier/settings.toml b/docker/mobile/packet_verifier/settings.toml index 247966f32..14fb7cb76 100644 --- a/docker/mobile/packet_verifier/settings.toml +++ b/docker/mobile/packet_verifier/settings.toml @@ -24,4 +24,4 @@ endpoint = "0.0.0.0:19000" url = "http://config:9081/" signing_keypair = "/opt/mobile-packet-verifier/etc/keypair.bin" config_pubkey = "14c5dZUZgFEVcocB3mfcjhXEVqDuafnpzghgyr2i422okXVByPr" -# /target/release/mobile-config-cli env info --keypair=docker/mobile/packet_verifier/keypair.bin +# ./target/release/mobile-config-cli env info --keypair=docker/mobile/packet_verifier/keypair.bin diff --git a/docker/mobile/postgres_seeder/Dockerfile b/docker/mobile/postgres_seeder/Dockerfile index 3c4c9c1f7..ada64b008 100644 --- a/docker/mobile/postgres_seeder/Dockerfile +++ b/docker/mobile/postgres_seeder/Dockerfile @@ -1,10 +1,7 @@ FROM rust:latest -ENV DB_URL=postgres://postgres:postgres@postgres:5432 - RUN apt-get update && apt-get install -y postgresql - RUN cargo install sqlx-cli --no-default-features --features native-tls,postgres COPY ./mobile_config/migrations /mobile_config/migrations @@ -12,8 +9,6 @@ COPY ./mobile_packet_verifier/migrations /mobile_packet_verifier/migrations COPY ./mobile_verifier/migrations /mobile_verifier/migrations COPY ./reward_index/migrations /reward_index/migrations -COPY ./docker/mobile/postgres_seeder/mobile_config /postgres_seeder/mobile_config - COPY ./docker/mobile/postgres_seeder/run.sh /run.sh CMD ["/run.sh"] \ No newline at end of file diff --git a/docker/mobile/postgres_seeder/mobile_config/pubkeys.sql b/docker/mobile/postgres_seeder/mobile_config/pubkeys.sql deleted file mode 100644 index 167282b24..000000000 --- a/docker/mobile/postgres_seeder/mobile_config/pubkeys.sql +++ /dev/null @@ -1,17 +0,0 @@ -INSERT INTO - registered_keys (pubkey, key_role, created_at, updated_at, name) -VALUES - ( - '14c5dZUZgFEVcocB3mfcjhXEVqDuafnpzghgyr2i422okXVByPr', - 'oracle', - TIMESTAMP '2023-10-31T22:00:00.0+00', - TIMESTAMP '2023-10-31T22:00:00.0+00', - 'packet_verifier' - ), - ( - '131kC5gTPFfTyzziHbh2PWz2VSdF4gDvhoC5vqCz25N7LFtDocF', - 'administrator', - TIMESTAMP '2023-10-31T21:00:00.0+00', - TIMESTAMP '2023-10-31T21:00:00.0+00', - 'config' - ); \ No newline at end of file diff --git a/docker/mobile/postgres_seeder/post_migration/mobile_config-pubkeys.sql b/docker/mobile/postgres_seeder/post_migration/mobile_config-pubkeys.sql new file mode 100644 index 000000000..e5036ad73 --- /dev/null +++ b/docker/mobile/postgres_seeder/post_migration/mobile_config-pubkeys.sql @@ -0,0 +1,44 @@ +INSERT INTO + registered_keys (pubkey, key_role, created_at, updated_at, name) +VALUES + ( + '131kC5gTPFfTyzziHbh2PWz2VSdF4gDvhoC5vqCz25N7LFtDocF', + 'administrator', + CURRENT_TIMESTAMP, + CURRENT_TIMESTAMP, + 'config' + ) ON CONFLICT (pubkey, key_role) DO +UPDATE +SET + created_at = CURRENT_TIMESTAMP, + updated_at = CURRENT_TIMESTAMP; + +INSERT INTO + registered_keys (pubkey, key_role, created_at, updated_at, name) +VALUES + ( + '14c5dZUZgFEVcocB3mfcjhXEVqDuafnpzghgyr2i422okXVByPr', + 'oracle', + CURRENT_TIMESTAMP, + CURRENT_TIMESTAMP, + 'packet_verifier' + ) ON CONFLICT (pubkey, key_role) DO +UPDATE +SET + created_at = CURRENT_TIMESTAMP, + updated_at = CURRENT_TIMESTAMP; + +INSERT INTO + registered_keys (pubkey, key_role, created_at, updated_at, name) +VALUES + ( + '14FGkBKPAdBuCtKGFkSnUmvoUBkJGjKVLrPrNLXKN3NgMiLTtwm', + 'oracle', + CURRENT_TIMESTAMP, + CURRENT_TIMESTAMP, + 'verifier' + ) ON CONFLICT (pubkey, key_role) DO +UPDATE +SET + created_at = CURRENT_TIMESTAMP, + updated_at = CURRENT_TIMESTAMP; \ No newline at end of file diff --git a/docker/mobile/postgres_seeder/post_migration/mobile_verifier-meta.sql b/docker/mobile/postgres_seeder/post_migration/mobile_verifier-meta.sql new file mode 100644 index 000000000..8ae8dd281 --- /dev/null +++ b/docker/mobile/postgres_seeder/post_migration/mobile_verifier-meta.sql @@ -0,0 +1,29 @@ +-- disable_complete_data_checks_until 0 last_rewarded_end_time 1710640800 last_verified_end_time 1686186000 next_rewarded_end_time 1710727200 +INSERT INTO + meta (key, value) +VALUES + ( + 'last_rewarded_end_time', + ( + SELECT + floor( + extract( + epoch + from + now() at time zone 'utc' + ) + ) + ) + ) ON CONFLICT (key) DO +UPDATE +SET + value = ( + SELECT + floor( + extract( + epoch + from + now() at time zone 'utc' + ) + ) + ); \ No newline at end of file diff --git a/docker/mobile/postgres_seeder/run.sh b/docker/mobile/postgres_seeder/run.sh index b39273264..92df8ddef 100755 --- a/docker/mobile/postgres_seeder/run.sh +++ b/docker/mobile/postgres_seeder/run.sh @@ -18,10 +18,13 @@ sqlx migrate run --database-url postgres://$POSTGRES_USER:$POSTGRES_PASSWORD@$PO echo "#############################################" export PGPASSWORD=$POSTGRES_PASSWORD -MOBILE_CONFIG_FILES=/postgres_seeder/mobile_config/* -for file in $MOBILE_CONFIG_FILES; do - echo "Running $file" - psql -h $POSTGRES_HOST -U $POSTGRES_USER -d mobile_config -f $file +FILES=/postgres_seeder/post_migration/* +for file in $FILES; do + readarray -d "-" -t array <<<"$file" + db=$(echo ${array[0]} | sed 's|/postgres_seeder/post_migration/||g') + echo "Running $file on db $db" + + psql -h $POSTGRES_HOST -U $POSTGRES_USER -d $db -f $file echo "#############################################" done diff --git a/docker/mobile/verifier/footfall_data_set b/docker/mobile/verifier/footfall_data_set new file mode 100644 index 000000000..e69de29bb diff --git a/docker/mobile/verifier/keypair.bin b/docker/mobile/verifier/keypair.bin new file mode 100644 index 0000000000000000000000000000000000000000..2c0b017c3750ce63ea299476a3ca42d389340038 GIT binary patch literal 65 zcmV-H0KWeL9xnNT&9KV9hQ9M2cJQ(PMu_`*r@4WlP8aMx2tA0(YoO=M!n&ymD XN0QGzO^#UnPQlm2;WO)0iC1EilQ|=u literal 0 HcmV?d00001 diff --git a/docker/mobile/verifier/landtype_data_set b/docker/mobile/verifier/landtype_data_set new file mode 100644 index 000000000..e69de29bb diff --git a/docker/mobile/verifier/settings.toml b/docker/mobile/verifier/settings.toml new file mode 100644 index 000000000..a1a6632e0 --- /dev/null +++ b/docker/mobile/verifier/settings.toml @@ -0,0 +1,46 @@ +log = "mobile-verifier=debug,file_store=info,custom_tracing=info" +cache = "/opt/mobile-verifier/data" +rewards = "24 hours" +reward_offset_minutes = "30 minutes" +modeled_coverage_start = "2023-08-20 00:00:00.000000000 UTC" +usa_and_mexico_geofence_regions = "/opt/mobile-verifier/usa_and_mexico_geofence_regions" +usa_geofence_regions = "/opt/mobile-verifier/usa_geofence_regions" +urbanization_data_set = "/opt/mobile-verifier/urbanization_data_set" +footfall_data_set = "/opt/mobile-verifier/footfall_data_set" +landtype_data_set = "/opt/mobile-verifier/landtype_data_set" + +[database] +url = "postgres://postgres:postgres@postgres:5432/mobile_verifier" +max_connections = 10 + +[config_client] +url = "http://config:9081/" +signing_keypair = "/opt/mobile-verifier/etc/keypair.bin" +config_pubkey = "14FGkBKPAdBuCtKGFkSnUmvoUBkJGjKVLrPrNLXKN3NgMiLTtwm" +# ./target/release/mobile-config-cli env info --keypair=docker/mobile/verifier/keypair.bin + +[ingest] +bucket = "mobile-ingest" +region = "us-east-1" +endpoint = "http://localstack:4566" + +[data_transfer_ingest] +bucket = "mobile-packet-verifier" +region = "us-east-1" +endpoint = "http://localstack:4566" + +[price_tracker] +price_duration_minutes = 10 + +[price_tracker.file_store] +bucket = "mobile-price" +region = "us-east-1" +endpoint = "http://localstack:4566" + +[output] +bucket = "mobile-verifier" +region = "us-east-1" +endpoint = "http://localstack:4566" + +[metrics] +endpoint = "0.0.0.0:19000" diff --git a/docker/mobile/verifier/urbanization_data_set b/docker/mobile/verifier/urbanization_data_set new file mode 100644 index 000000000..e69de29bb diff --git a/docker/mobile/verifier/usa_and_mexico_geofence_regions b/docker/mobile/verifier/usa_and_mexico_geofence_regions new file mode 100644 index 000000000..e69de29bb diff --git a/docker/mobile/verifier/usa_geofence_regions b/docker/mobile/verifier/usa_geofence_regions new file mode 100644 index 000000000..e69de29bb From 643872f03bb10e40075517e71bd97c3e357bb673 Mon Sep 17 00:00:00 2001 From: Macpie Date: Fri, 24 May 2024 10:28:47 -0700 Subject: [PATCH 11/54] Do not update created_at --- .../postgres_seeder/post_migration/mobile_config-pubkeys.sql | 3 --- .../postgres_seeder/post_migration/mobile_verifier-meta.sql | 1 - 2 files changed, 4 deletions(-) diff --git a/docker/mobile/postgres_seeder/post_migration/mobile_config-pubkeys.sql b/docker/mobile/postgres_seeder/post_migration/mobile_config-pubkeys.sql index e5036ad73..4949d45ef 100644 --- a/docker/mobile/postgres_seeder/post_migration/mobile_config-pubkeys.sql +++ b/docker/mobile/postgres_seeder/post_migration/mobile_config-pubkeys.sql @@ -10,7 +10,6 @@ VALUES ) ON CONFLICT (pubkey, key_role) DO UPDATE SET - created_at = CURRENT_TIMESTAMP, updated_at = CURRENT_TIMESTAMP; INSERT INTO @@ -25,7 +24,6 @@ VALUES ) ON CONFLICT (pubkey, key_role) DO UPDATE SET - created_at = CURRENT_TIMESTAMP, updated_at = CURRENT_TIMESTAMP; INSERT INTO @@ -40,5 +38,4 @@ VALUES ) ON CONFLICT (pubkey, key_role) DO UPDATE SET - created_at = CURRENT_TIMESTAMP, updated_at = CURRENT_TIMESTAMP; \ No newline at end of file diff --git a/docker/mobile/postgres_seeder/post_migration/mobile_verifier-meta.sql b/docker/mobile/postgres_seeder/post_migration/mobile_verifier-meta.sql index 8ae8dd281..20f423743 100644 --- a/docker/mobile/postgres_seeder/post_migration/mobile_verifier-meta.sql +++ b/docker/mobile/postgres_seeder/post_migration/mobile_verifier-meta.sql @@ -1,4 +1,3 @@ --- disable_complete_data_checks_until 0 last_rewarded_end_time 1710640800 last_verified_end_time 1686186000 next_rewarded_end_time 1710727200 INSERT INTO meta (key, value) VALUES From dc60ed5d5361d083136bdde97c479dd9c24e0998 Mon Sep 17 00:00:00 2001 From: Macpie Date: Fri, 24 May 2024 11:07:37 -0700 Subject: [PATCH 12/54] Upgrade to latest main and init verifier bucket with local dataset --- docker/mobile/docker-compose.yml | 6 +----- .../{verifier/footfall_data_set => localstack/data/test} | 0 docker/mobile/localstack/init-s3.sh | 3 +++ docker/mobile/verifier/landtype_data_set | 0 docker/mobile/verifier/settings.toml | 9 ++++++--- docker/mobile/verifier/urbanization_data_set | 0 docker/mobile/verifier/usa_geofence_regions | 0 7 files changed, 10 insertions(+), 8 deletions(-) rename docker/mobile/{verifier/footfall_data_set => localstack/data/test} (100%) delete mode 100644 docker/mobile/verifier/landtype_data_set delete mode 100644 docker/mobile/verifier/urbanization_data_set delete mode 100644 docker/mobile/verifier/usa_geofence_regions diff --git a/docker/mobile/docker-compose.yml b/docker/mobile/docker-compose.yml index 4cc12cd06..44b3dbed1 100644 --- a/docker/mobile/docker-compose.yml +++ b/docker/mobile/docker-compose.yml @@ -42,6 +42,7 @@ services: volumes: - localstack-data:/var/lib/localstack - ./localstack/init-s3.sh:/etc/localstack/init/ready.d/init-s3.sh + - ./localstack/data:/tmp/data ingest: build: @@ -122,11 +123,6 @@ services: volumes: - ./verifier/settings.toml:/opt/mobile-verifier/etc/settings.toml - ./verifier/keypair.bin:/opt/mobile-verifier/etc/keypair.bin - - ./verifier/usa_and_mexico_geofence_regions:/opt/mobile-verifier/usa_and_mexico_geofence_regions - - ./verifier/usa_geofence_regions:/opt/mobile-verifier/usa_geofence_regions - - ./verifier/urbanization_data_set:/opt/mobile-verifier/urbanization_data_set - - ./verifier/footfall_data_set:/opt/mobile-verifier/footfall_data_set - - ./verifier/landtype_data_set:/opt/mobile-verifier/landtype_data_set volumes: postgres-data: diff --git a/docker/mobile/verifier/footfall_data_set b/docker/mobile/localstack/data/test similarity index 100% rename from docker/mobile/verifier/footfall_data_set rename to docker/mobile/localstack/data/test diff --git a/docker/mobile/localstack/init-s3.sh b/docker/mobile/localstack/init-s3.sh index 60ea84f9e..c28251664 100755 --- a/docker/mobile/localstack/init-s3.sh +++ b/docker/mobile/localstack/init-s3.sh @@ -4,3 +4,6 @@ awslocal s3 mb s3://mobile-ingest awslocal s3 mb s3://mobile-verifier awslocal s3 mb s3://mobile-packet-verifier awslocal s3 mb s3://mobile-price +awslocal s3 mb s3://mobile-verifier-data-sets + +awslocal s3 cp /tmp/data/ s3://mobile-verifier-data-sets/ --recursive diff --git a/docker/mobile/verifier/landtype_data_set b/docker/mobile/verifier/landtype_data_set deleted file mode 100644 index e69de29bb..000000000 diff --git a/docker/mobile/verifier/settings.toml b/docker/mobile/verifier/settings.toml index a1a6632e0..4cc34d11a 100644 --- a/docker/mobile/verifier/settings.toml +++ b/docker/mobile/verifier/settings.toml @@ -3,11 +3,14 @@ cache = "/opt/mobile-verifier/data" rewards = "24 hours" reward_offset_minutes = "30 minutes" modeled_coverage_start = "2023-08-20 00:00:00.000000000 UTC" +data_sets_directory = "/opt/mobile-verifier/data_sets_directory" usa_and_mexico_geofence_regions = "/opt/mobile-verifier/usa_and_mexico_geofence_regions" usa_geofence_regions = "/opt/mobile-verifier/usa_geofence_regions" -urbanization_data_set = "/opt/mobile-verifier/urbanization_data_set" -footfall_data_set = "/opt/mobile-verifier/footfall_data_set" -landtype_data_set = "/opt/mobile-verifier/landtype_data_set" + +[data_sets] +bucket = "mobile-verifier-data-sets" +region = "us-east-1" +endpoint = "http://localstack:4566" [database] url = "postgres://postgres:postgres@postgres:5432/mobile_verifier" diff --git a/docker/mobile/verifier/urbanization_data_set b/docker/mobile/verifier/urbanization_data_set deleted file mode 100644 index e69de29bb..000000000 diff --git a/docker/mobile/verifier/usa_geofence_regions b/docker/mobile/verifier/usa_geofence_regions deleted file mode 100644 index e69de29bb..000000000 From b97507818a3550c9169e7cbe55519a3d57807744 Mon Sep 17 00:00:00 2001 From: Macpie Date: Fri, 24 May 2024 15:03:50 -0700 Subject: [PATCH 13/54] Auto load data sets for verifier --- .../data/mobile-verifier-data-sets/footfall | Bin 0 -> 842 bytes .../data/mobile-verifier-data-sets/landtype | Bin 0 -> 905 bytes .../data/mobile-verifier-data-sets/urbanization | Bin 0 -> 836 bytes docker/mobile/localstack/data/test | 0 docker/mobile/localstack/init-s3.sh | 9 ++++++++- 5 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 docker/mobile/localstack/data/mobile-verifier-data-sets/footfall create mode 100644 docker/mobile/localstack/data/mobile-verifier-data-sets/landtype create mode 100644 docker/mobile/localstack/data/mobile-verifier-data-sets/urbanization delete mode 100644 docker/mobile/localstack/data/test diff --git a/docker/mobile/localstack/data/mobile-verifier-data-sets/footfall b/docker/mobile/localstack/data/mobile-verifier-data-sets/footfall new file mode 100644 index 0000000000000000000000000000000000000000..dcfe7a8fee9d30952559090bf01c56eeb2659dd8 GIT binary patch literal 842 zcmc~uttcr0U^|FB24)@tkw-v;qn4xA|5qT^8xZjhM0@}dpFqSH5b+H}fYgB@ zgCh{Ob1(zNL4ek|s%R^9G(klF^0>DJ~AXi{-Q@Cl~JSu97^5vm{A!GWI(W zFR8T&w3V_RR7v`mxo46It^-p~aXdqJ zfukkfVZXwiDL1$UDP&R~sE%-gGhE;bH;_d--};Gom=&N2I)!P-fPgIIAP?X3Qs@#{ Z87feP8rV>W&w0!S4w(l-@J-9>T2IprGjjj{ literal 0 HcmV?d00001 diff --git a/docker/mobile/localstack/data/mobile-verifier-data-sets/urbanization b/docker/mobile/localstack/data/mobile-verifier-data-sets/urbanization new file mode 100644 index 0000000000000000000000000000000000000000..ad0017520218cba40ac3d9210983e9eb85bf3c41 GIT binary patch literal 836 zcmc~uttcr0U^|FB24)@tkw-v;BcmhZ|5qT^8xZjhM0@}dpFqSH5b+H}0M#*o vAyB;|V>2@|P|OrW{8tB&njk_OMCgJDeGp*?B8)) Date: Fri, 24 May 2024 15:21:34 -0700 Subject: [PATCH 14/54] Add todo geofence files --- docker/mobile/docker-compose.yml | 2 ++ docker/mobile/verifier/settings.toml | 36 +++++++++---------- .../todo} | 0 .../mobile/verifier/usa_geofence_regions/todo | 0 4 files changed, 20 insertions(+), 18 deletions(-) rename docker/mobile/verifier/{usa_and_mexico_geofence_regions => usa_and_mexico_geofence_regions/todo} (100%) create mode 100644 docker/mobile/verifier/usa_geofence_regions/todo diff --git a/docker/mobile/docker-compose.yml b/docker/mobile/docker-compose.yml index 44b3dbed1..83e9c31e7 100644 --- a/docker/mobile/docker-compose.yml +++ b/docker/mobile/docker-compose.yml @@ -123,6 +123,8 @@ services: volumes: - ./verifier/settings.toml:/opt/mobile-verifier/etc/settings.toml - ./verifier/keypair.bin:/opt/mobile-verifier/etc/keypair.bin + - ./verifier/usa_and_mexico_geofence_regions:/opt/mobile-verifier/usa_and_mexico_geofence_regions + - ./verifier/usa_geofence_regions:/opt/mobile-verifier/usa_geofence_regions volumes: postgres-data: diff --git a/docker/mobile/verifier/settings.toml b/docker/mobile/verifier/settings.toml index 4cc34d11a..7f7d0dbb2 100644 --- a/docker/mobile/verifier/settings.toml +++ b/docker/mobile/verifier/settings.toml @@ -7,21 +7,10 @@ data_sets_directory = "/opt/mobile-verifier/data_sets_directory" usa_and_mexico_geofence_regions = "/opt/mobile-verifier/usa_and_mexico_geofence_regions" usa_geofence_regions = "/opt/mobile-verifier/usa_geofence_regions" -[data_sets] -bucket = "mobile-verifier-data-sets" -region = "us-east-1" -endpoint = "http://localstack:4566" - [database] url = "postgres://postgres:postgres@postgres:5432/mobile_verifier" max_connections = 10 -[config_client] -url = "http://config:9081/" -signing_keypair = "/opt/mobile-verifier/etc/keypair.bin" -config_pubkey = "14FGkBKPAdBuCtKGFkSnUmvoUBkJGjKVLrPrNLXKN3NgMiLTtwm" -# ./target/release/mobile-config-cli env info --keypair=docker/mobile/verifier/keypair.bin - [ingest] bucket = "mobile-ingest" region = "us-east-1" @@ -32,18 +21,29 @@ bucket = "mobile-packet-verifier" region = "us-east-1" endpoint = "http://localstack:4566" -[price_tracker] -price_duration_minutes = 10 - -[price_tracker.file_store] -bucket = "mobile-price" +[output] +bucket = "mobile-verifier" region = "us-east-1" endpoint = "http://localstack:4566" -[output] -bucket = "mobile-verifier" +[data_sets] +bucket = "mobile-verifier-data-sets" region = "us-east-1" endpoint = "http://localstack:4566" [metrics] endpoint = "0.0.0.0:19000" + +[price_tracker] +price_duration_minutes = 10 + +[price_tracker.file_store] +bucket = "mobile-price" +region = "us-east-1" +endpoint = "http://localstack:4566" + +[config_client] +url = "http://config:9081/" +signing_keypair = "/opt/mobile-verifier/etc/keypair.bin" +config_pubkey = "14FGkBKPAdBuCtKGFkSnUmvoUBkJGjKVLrPrNLXKN3NgMiLTtwm" +# ./target/release/mobile-config-cli env info --keypair=docker/mobile/verifier/keypair.bin diff --git a/docker/mobile/verifier/usa_and_mexico_geofence_regions b/docker/mobile/verifier/usa_and_mexico_geofence_regions/todo similarity index 100% rename from docker/mobile/verifier/usa_and_mexico_geofence_regions rename to docker/mobile/verifier/usa_and_mexico_geofence_regions/todo diff --git a/docker/mobile/verifier/usa_geofence_regions/todo b/docker/mobile/verifier/usa_geofence_regions/todo new file mode 100644 index 000000000..e69de29bb From 4caefc15983e047c9a49cb33bb1464ed114a20e2 Mon Sep 17 00:00:00 2001 From: Macpie Date: Tue, 28 May 2024 10:51:56 -0700 Subject: [PATCH 15/54] Publish actual geofence --- .../mobile/verifier/usa_and_mexico_geofence_regions/mexico.txt | 1 + docker/mobile/verifier/usa_and_mexico_geofence_regions/todo | 0 .../verifier/usa_and_mexico_geofence_regions/us-territories.txt | 1 + docker/mobile/verifier/usa_geofence_regions/todo | 0 docker/mobile/verifier/usa_geofence_regions/us-territories.txt | 1 + 5 files changed, 3 insertions(+) create mode 100644 docker/mobile/verifier/usa_and_mexico_geofence_regions/mexico.txt delete mode 100644 docker/mobile/verifier/usa_and_mexico_geofence_regions/todo create mode 100644 docker/mobile/verifier/usa_and_mexico_geofence_regions/us-territories.txt delete mode 100644 docker/mobile/verifier/usa_geofence_regions/todo create mode 100644 docker/mobile/verifier/usa_geofence_regions/us-territories.txt diff --git a/docker/mobile/verifier/usa_and_mexico_geofence_regions/mexico.txt b/docker/mobile/verifier/usa_and_mexico_geofence_regions/mexico.txt new file mode 100644 index 000000000..a19647d38 --- /dev/null +++ b/docker/mobile/verifier/usa_and_mexico_geofence_regions/mexico.txt @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/docker/mobile/verifier/usa_and_mexico_geofence_regions/todo b/docker/mobile/verifier/usa_and_mexico_geofence_regions/todo deleted file mode 100644 index e69de29bb..000000000 diff --git a/docker/mobile/verifier/usa_and_mexico_geofence_regions/us-territories.txt b/docker/mobile/verifier/usa_and_mexico_geofence_regions/us-territories.txt new file mode 100644 index 000000000..0cd57bc57 --- /dev/null +++ b/docker/mobile/verifier/usa_and_mexico_geofence_regions/us-territories.txt @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/docker/mobile/verifier/usa_geofence_regions/todo b/docker/mobile/verifier/usa_geofence_regions/todo deleted file mode 100644 index e69de29bb..000000000 diff --git a/docker/mobile/verifier/usa_geofence_regions/us-territories.txt b/docker/mobile/verifier/usa_geofence_regions/us-territories.txt new file mode 100644 index 000000000..0cd57bc57 --- /dev/null +++ b/docker/mobile/verifier/usa_geofence_regions/us-territories.txt @@ -0,0 +1 @@ +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 \ No newline at end of file From 3dbbfbf3091ebccaee66e2b15d4d98ed1f3efa3c Mon Sep 17 00:00:00 2001 From: Macpie Date: Tue, 28 May 2024 14:06:44 -0700 Subject: [PATCH 16/54] Generate assignment files --- Cargo.lock | 3 + .../data/mobile-verifier-data-sets/footfall | Bin 842 -> 0 bytes .../footfall.1716929694050.gz | Bin 0 -> 165 bytes .../data/mobile-verifier-data-sets/landtype | Bin 905 -> 0 bytes .../landtype.1716929694053.gz | Bin 0 -> 167 bytes .../mobile-verifier-data-sets/urbanization | Bin 836 -> 0 bytes .../urbanized.1716929694048.gz | Bin 0 -> 185 bytes test_mobile/Cargo.toml | 5 +- test_mobile/README.md | 9 ++ test_mobile/src/cli/assignment.rs | 132 ++++++++++++++++++ test_mobile/src/cli/mod.rs | 1 + test_mobile/src/lib.rs | 1 + test_mobile/src/main.rs | 35 ++++- 13 files changed, 183 insertions(+), 3 deletions(-) delete mode 100644 docker/mobile/localstack/data/mobile-verifier-data-sets/footfall create mode 100644 docker/mobile/localstack/data/mobile-verifier-data-sets/footfall.1716929694050.gz delete mode 100644 docker/mobile/localstack/data/mobile-verifier-data-sets/landtype create mode 100644 docker/mobile/localstack/data/mobile-verifier-data-sets/landtype.1716929694053.gz delete mode 100644 docker/mobile/localstack/data/mobile-verifier-data-sets/urbanization create mode 100644 docker/mobile/localstack/data/mobile-verifier-data-sets/urbanized.1716929694048.gz create mode 100644 test_mobile/README.md create mode 100644 test_mobile/src/cli/assignment.rs create mode 100644 test_mobile/src/cli/mod.rs create mode 100644 test_mobile/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index e0fe5df5a..a2b2a4ab5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7852,6 +7852,9 @@ name = "test-mobile" version = "0.1.0" dependencies = [ "anyhow", + "clap 4.4.8", + "flate2", + "hextree", "tokio", ] diff --git a/docker/mobile/localstack/data/mobile-verifier-data-sets/footfall b/docker/mobile/localstack/data/mobile-verifier-data-sets/footfall deleted file mode 100644 index dcfe7a8fee9d30952559090bf01c56eeb2659dd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 842 zcmc~uttcr0U^|FB24)@tkw-v;qn4xA|5qT^8xZjhM0@}dpFqSH5b+H}fYgB@ zgCh{Ob1(zN&FK@Eb-W{w>Zn Tbf9bUSyJ5;i)HlxCj$TgB$-OA literal 0 HcmV?d00001 diff --git a/docker/mobile/localstack/data/mobile-verifier-data-sets/landtype b/docker/mobile/localstack/data/mobile-verifier-data-sets/landtype deleted file mode 100644 index 28549c12450411fdeae02759f9200a4fa871b0f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 905 zcmeIw!3qIE9LMpEi>L4ek|s%R^9G(klF^0>DJ~AXi{-Q@Cl~JSu97^5vm{A!GWI(W zFR8T&w3V_RR7v`mxo46It^-p~aXdqJ zfukkfVZXwiDL1$UDP&R~sE%-gGhE;bH;_d--};Gom=&N2I)!P-fPgIIAP?X3Qs@#{ Z87feP8rV>W&w0!S4w(l-@J-9>T2IprGjjj{ diff --git a/docker/mobile/localstack/data/mobile-verifier-data-sets/landtype.1716929694053.gz b/docker/mobile/localstack/data/mobile-verifier-data-sets/landtype.1716929694053.gz new file mode 100644 index 0000000000000000000000000000000000000000..a51c938ed1c830e2df4d4bade6aba8482842e00c GIT binary patch literal 167 zcmV;Y09gMYiwFP!00000|LxE}3c@fH$MMiCl1qq)7jW*9!vq8;MbO2;KZAmUgOgJy zXK!E!MMOlM+?`ydly0T{z8<1O`$9em$&WX@o|}w@&Z$&YqWYeytEAcv82)mMvnj3? z7_M=%!#B+L@)?K+JYDb#H@L$Co?wlvuJx@Set3C(F_HE^JVzKyI!_%vo!<-u4J|GH VP0kjyp`(keVP_$-U|c5y005gfN`?Rc literal 0 HcmV?d00001 diff --git a/docker/mobile/localstack/data/mobile-verifier-data-sets/urbanization b/docker/mobile/localstack/data/mobile-verifier-data-sets/urbanization deleted file mode 100644 index ad0017520218cba40ac3d9210983e9eb85bf3c41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 836 zcmc~uttcr0U^|FB24)@tkw-v;BcmhZ|5qT^8xZjhM0@}dpFqSH5b+H}0M#*o vAyB;|V>2@|P|OrW{8tB&njk_OMCgJDeGp*?B8))!)r<92li@~3PG8jxI zyM^ux+`$9bBuSFV%p~;vIm3N}JKXy_^*O)uJHO7aPQ&y%ZDZskk%(qO;s`0`Ek1wT z#X%n@BlM>@Ti_jrOTAoad5xZyw^)+zf&B<4IKu_5aMLa)u*82*+rKdFGV)EjOOmHt n+rP<>6~W754)RdYp8s;5Wlj~SLJjKn6+8I{Q)dbqR|5b5g~?a4 literal 0 HcmV?d00001 diff --git a/test_mobile/Cargo.toml b/test_mobile/Cargo.toml index e5b0e6c1a..e773c0b3a 100644 --- a/test_mobile/Cargo.toml +++ b/test_mobile/Cargo.toml @@ -6,6 +6,9 @@ edition.workspace = true authors.workspace = true license.workspace = true -[dev-dependencies] +[dependencies] anyhow = { workspace = true } tokio = { workspace = true } +clap = { workspace = true } +hextree = { workspace = true } +flate2 = "1" diff --git a/test_mobile/README.md b/test_mobile/README.md new file mode 100644 index 000000000..3a3ef731e --- /dev/null +++ b/test_mobile/README.md @@ -0,0 +1,9 @@ +# Mobile Stack Testing + +# Setup + +## 1. Generate Mobile Verifier Data + +`../target/release/test-mobile assignment` and move files to `docker/mobile/localstack/data/mobile-verifier-data-sets` + +![Hexes](docs/hexes.png "Hexes") diff --git a/test_mobile/src/cli/assignment.rs b/test_mobile/src/cli/assignment.rs new file mode 100644 index 000000000..61802a8d9 --- /dev/null +++ b/test_mobile/src/cli/assignment.rs @@ -0,0 +1,132 @@ +use std::{ + fs::{self, File}, + io, + time::{SystemTime, UNIX_EPOCH}, +}; + +use anyhow::Result; +use flate2::{write::GzEncoder, Compression}; +use hextree::{Cell, HexTreeMap}; + +/// Generate footfall, landtype and urbanization +#[derive(Debug, clap::Args)] +pub struct Cmd {} + +impl Cmd { + pub async fn run(self) -> Result<()> { + let center_cell = Cell::from_raw(0x8a5d107916dffff)?; + + let inner_1_cell = Cell::from_raw(0x8a5d107916c7fff)?; + let inner_2_cell = Cell::from_raw(0x8a5d107916cffff)?; + let inner_3_cell = Cell::from_raw(0x8a5d1079ed67fff)?; + let inner_4_cell = Cell::from_raw(0x8a5d1079ed77fff)?; + let inner_5_cell = Cell::from_raw(0x8a5d1079ed2ffff)?; + let inner_6_cell = Cell::from_raw(0x8a5d107916d7fff)?; + + let outer_1_cell = Cell::from_raw(0x8a5d107916e7fff)?; + let outer_2_cell = Cell::from_raw(0x8a5d107916effff)?; + let outer_3_cell = Cell::from_raw(0x8a5d1079e9b7fff)?; + let outer_4_cell = Cell::from_raw(0x8a5d1079e997fff)?; + let outer_5_cell = Cell::from_raw(0x8a5d1079ed6ffff)?; + let outer_6_cell = Cell::from_raw(0x8a5d1079ed47fff)?; + let outer_7_cell = Cell::from_raw(0x8a5d1079ed57fff)?; + let outer_8_cell = Cell::from_raw(0x8a5d1079ed0ffff)?; + let outer_9_cell = Cell::from_raw(0x8a5d1079ed07fff)?; + let outer_10_cell = Cell::from_raw(0x8a5d1079ed27fff)?; + let outer_11_cell = Cell::from_raw(0x8a5d1079168ffff)?; + let outer_12_cell = Cell::from_raw(0x8a5d107916f7fff)?; + + // Footfall Data + // POI - footfalls > 1 for a POI across hexes + // POI No Data - No footfalls for a POI across any hexes + // NO POI - Does not exist + let mut footfall = HexTreeMap::::new(); + footfall.insert(center_cell, 42); + footfall.insert(inner_1_cell, 42); + footfall.insert(inner_2_cell, 42); + footfall.insert(inner_3_cell, 42); + footfall.insert(inner_4_cell, 42); + footfall.insert(inner_5_cell, 42); + footfall.insert(inner_6_cell, 42); + footfall.insert(outer_1_cell, 0); + footfall.insert(outer_2_cell, 0); + footfall.insert(outer_3_cell, 0); + footfall.insert(outer_4_cell, 0); + footfall.insert(outer_5_cell, 0); + footfall.insert(outer_6_cell, 0); + // outer_7 to 12 = NO POI + + // Landtype Data + // Map to enum values for Landtype + // An unknown cell is considered Assignment::C + let mut landtype = HexTreeMap::::new(); + landtype.insert(center_cell, 50); + landtype.insert(inner_1_cell, 10); + landtype.insert(inner_2_cell, 10); + landtype.insert(inner_3_cell, 10); + landtype.insert(inner_4_cell, 10); + landtype.insert(inner_5_cell, 10); + landtype.insert(inner_6_cell, 10); + landtype.insert(outer_1_cell, 60); + landtype.insert(outer_2_cell, 60); + landtype.insert(outer_3_cell, 60); + landtype.insert(outer_4_cell, 60); + landtype.insert(outer_5_cell, 60); + landtype.insert(outer_6_cell, 60); + // outer_7 to 12 = unknown + + // Urbanized data + // Urban - something in the map, and in the geofence + // Not Urban - nothing in the map, but in the geofence + // Outside - not in the geofence, urbanized hex never considered + let mut urbanized = HexTreeMap::::new(); + urbanized.insert(center_cell, 1); + urbanized.insert(inner_1_cell, 1); + urbanized.insert(inner_2_cell, 1); + urbanized.insert(inner_3_cell, 1); + urbanized.insert(inner_4_cell, 1); + urbanized.insert(inner_5_cell, 1); + urbanized.insert(inner_6_cell, 1); + urbanized.insert(outer_1_cell, 1); + urbanized.insert(outer_2_cell, 1); + urbanized.insert(outer_3_cell, 1); + urbanized.insert(outer_4_cell, 1); + urbanized.insert(outer_5_cell, 1); + urbanized.insert(outer_6_cell, 1); + urbanized.insert(outer_7_cell, 0); + urbanized.insert(outer_8_cell, 0); + urbanized.insert(outer_9_cell, 0); + urbanized.insert(outer_10_cell, 0); + urbanized.insert(outer_11_cell, 0); + urbanized.insert(outer_12_cell, 0); + + hex_tree_map_to_file(urbanized, "urbanized")?; + hex_tree_map_to_file(footfall, "footfall")?; + hex_tree_map_to_file(landtype, "landtype")?; + + Ok(()) + } +} + +fn hex_tree_map_to_file(map: HexTreeMap, name: &str) -> Result<()> { + let now = SystemTime::now() + .duration_since(UNIX_EPOCH) + .unwrap() + .as_millis(); + + let file_name = format!("{name}.{now}"); + let data_file = File::create(file_name.clone())?; + + map.to_disktree(data_file, |w, v| w.write_all(&[*v]))?; + + let mut input = io::BufReader::new(File::open(file_name.clone())?); + let output = File::create(format!("{}.gz", file_name.clone()))?; + + let mut encoder = GzEncoder::new(output, Compression::default()); + io::copy(&mut input, &mut encoder)?; + encoder.finish()?; + + fs::remove_file(file_name.clone())?; + + Ok(()) +} diff --git a/test_mobile/src/cli/mod.rs b/test_mobile/src/cli/mod.rs new file mode 100644 index 000000000..53a13b474 --- /dev/null +++ b/test_mobile/src/cli/mod.rs @@ -0,0 +1 @@ +pub mod assignment; diff --git a/test_mobile/src/lib.rs b/test_mobile/src/lib.rs new file mode 100644 index 000000000..4f773726a --- /dev/null +++ b/test_mobile/src/lib.rs @@ -0,0 +1 @@ +pub mod cli; diff --git a/test_mobile/src/main.rs b/test_mobile/src/main.rs index 70fecd714..4dddafdb2 100644 --- a/test_mobile/src/main.rs +++ b/test_mobile/src/main.rs @@ -1,3 +1,34 @@ -fn main() -> () { - () +use anyhow::Result; +use clap::Parser; +use test_mobile::cli::assignment; + +#[derive(clap::Parser)] +pub struct Cli { + #[clap(subcommand)] + cmd: Cmd, +} + +impl Cli { + pub async fn run(self) -> Result<()> { + self.cmd.run().await + } +} + +#[derive(clap::Subcommand)] +pub enum Cmd { + Assignment(assignment::Cmd), +} + +impl Cmd { + pub async fn run(self) -> Result<()> { + match self { + Self::Assignment(cmd) => cmd.run().await, + } + } +} + +#[tokio::main] +async fn main() -> Result<()> { + let cli = Cli::parse(); + cli.run().await } From 2ba08b6f1d3815d00c3f917ca6229c2091f497bf Mon Sep 17 00:00:00 2001 From: Macpie Date: Tue, 28 May 2024 16:58:37 -0700 Subject: [PATCH 17/54] Fix assignment encoding --- Cargo.lock | 1 + docker/mobile/docker-compose.yml | 6 ++-- ...929694050.gz => footfall.1716936346428.gz} | Bin ...929694053.gz => landtype.1716936346429.gz} | Bin ...29694048.gz => urbanized.1716936346427.gz} | Bin test_mobile/Cargo.toml | 3 +- test_mobile/README.md | 12 +++++-- test_mobile/src/cli/assignment.rs | 31 ++++++++---------- 8 files changed, 29 insertions(+), 24 deletions(-) rename docker/mobile/localstack/data/mobile-verifier-data-sets/{footfall.1716929694050.gz => footfall.1716936346428.gz} (100%) rename docker/mobile/localstack/data/mobile-verifier-data-sets/{landtype.1716929694053.gz => landtype.1716936346429.gz} (100%) rename docker/mobile/localstack/data/mobile-verifier-data-sets/{urbanized.1716929694048.gz => urbanized.1716936346427.gz} (100%) diff --git a/Cargo.lock b/Cargo.lock index a2b2a4ab5..94ee9a579 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7852,6 +7852,7 @@ name = "test-mobile" version = "0.1.0" dependencies = [ "anyhow", + "async-compression", "clap 4.4.8", "flate2", "hextree", diff --git a/docker/mobile/docker-compose.yml b/docker/mobile/docker-compose.yml index 83e9c31e7..6fc17bccf 100644 --- a/docker/mobile/docker-compose.yml +++ b/docker/mobile/docker-compose.yml @@ -120,11 +120,13 @@ services: - AWS_ACCESS_KEY_ID=AWS_ACCESS_KEY_ID - AWS_SECRET_ACCESS_KEY=AWS_SECRET_ACCESS_KEY - AWS_SESSION_TOKEN=AWS_SESSION_TOKEN + - RUST_BACKTRACE=1 volumes: - ./verifier/settings.toml:/opt/mobile-verifier/etc/settings.toml - ./verifier/keypair.bin:/opt/mobile-verifier/etc/keypair.bin - - ./verifier/usa_and_mexico_geofence_regions:/opt/mobile-verifier/usa_and_mexico_geofence_regions - - ./verifier/usa_geofence_regions:/opt/mobile-verifier/usa_geofence_regions + - ./verifier/usa_and_mexico_geofence_regions/mexico.txt:/opt/mobile-verifier/usa_and_mexico_geofence_regions/mexico.txt + - ./verifier/usa_and_mexico_geofence_regions/us-territories.txt:/opt/mobile-verifier/usa_and_mexico_geofence_regions/us-territories.txt + - ./verifier/usa_geofence_regions/us-territories.txt:/opt/mobile-verifier/usa_geofence_regions/us-territories.txt volumes: postgres-data: diff --git a/docker/mobile/localstack/data/mobile-verifier-data-sets/footfall.1716929694050.gz b/docker/mobile/localstack/data/mobile-verifier-data-sets/footfall.1716936346428.gz similarity index 100% rename from docker/mobile/localstack/data/mobile-verifier-data-sets/footfall.1716929694050.gz rename to docker/mobile/localstack/data/mobile-verifier-data-sets/footfall.1716936346428.gz diff --git a/docker/mobile/localstack/data/mobile-verifier-data-sets/landtype.1716929694053.gz b/docker/mobile/localstack/data/mobile-verifier-data-sets/landtype.1716936346429.gz similarity index 100% rename from docker/mobile/localstack/data/mobile-verifier-data-sets/landtype.1716929694053.gz rename to docker/mobile/localstack/data/mobile-verifier-data-sets/landtype.1716936346429.gz diff --git a/docker/mobile/localstack/data/mobile-verifier-data-sets/urbanized.1716929694048.gz b/docker/mobile/localstack/data/mobile-verifier-data-sets/urbanized.1716936346427.gz similarity index 100% rename from docker/mobile/localstack/data/mobile-verifier-data-sets/urbanized.1716929694048.gz rename to docker/mobile/localstack/data/mobile-verifier-data-sets/urbanized.1716936346427.gz diff --git a/test_mobile/Cargo.toml b/test_mobile/Cargo.toml index e773c0b3a..e1e47e3e3 100644 --- a/test_mobile/Cargo.toml +++ b/test_mobile/Cargo.toml @@ -8,7 +8,8 @@ license.workspace = true [dependencies] anyhow = { workspace = true } -tokio = { workspace = true } +tokio = { workspace = true, features = ["io-util", "fs"] } clap = { workspace = true } hextree = { workspace = true } flate2 = "1" +async-compression = { version = "0", features = ["tokio", "gzip"] } diff --git a/test_mobile/README.md b/test_mobile/README.md index 3a3ef731e..f30c29398 100644 --- a/test_mobile/README.md +++ b/test_mobile/README.md @@ -2,8 +2,14 @@ # Setup -## 1. Generate Mobile Verifier Data +## 1. Generate Mobile Verifier data -`../target/release/test-mobile assignment` and move files to `docker/mobile/localstack/data/mobile-verifier-data-sets` +`../target/release/test-mobile assignment` and move files [^files] to `docker/mobile/localstack/data/mobile-verifier-data-sets` -![Hexes](docs/hexes.png "Hexes") +## 2. Build Docker images + +`cd docker && docker compose build` + +[^files]: Maps of hexes used + +![Hexes](docs/hexes.png "Hexes") \ No newline at end of file diff --git a/test_mobile/src/cli/assignment.rs b/test_mobile/src/cli/assignment.rs index 61802a8d9..66154b710 100644 --- a/test_mobile/src/cli/assignment.rs +++ b/test_mobile/src/cli/assignment.rs @@ -1,12 +1,11 @@ use std::{ - fs::{self, File}, - io, + io::Cursor, time::{SystemTime, UNIX_EPOCH}, }; use anyhow::Result; -use flate2::{write::GzEncoder, Compression}; use hextree::{Cell, HexTreeMap}; +use tokio::{fs::File, io::AsyncWriteExt}; /// Generate footfall, landtype and urbanization #[derive(Debug, clap::Args)] @@ -100,33 +99,29 @@ impl Cmd { urbanized.insert(outer_11_cell, 0); urbanized.insert(outer_12_cell, 0); - hex_tree_map_to_file(urbanized, "urbanized")?; - hex_tree_map_to_file(footfall, "footfall")?; - hex_tree_map_to_file(landtype, "landtype")?; + hex_tree_map_to_file(urbanized, "urbanized").await?; + hex_tree_map_to_file(footfall, "footfall").await?; + hex_tree_map_to_file(landtype, "landtype").await?; Ok(()) } } -fn hex_tree_map_to_file(map: HexTreeMap, name: &str) -> Result<()> { +async fn hex_tree_map_to_file(map: HexTreeMap, name: &str) -> anyhow::Result<()> { let now = SystemTime::now() .duration_since(UNIX_EPOCH) .unwrap() .as_millis(); - let file_name = format!("{name}.{now}"); - let data_file = File::create(file_name.clone())?; + let file_name = format!("{name}.{now}.gz"); + let disktree_file = File::create(file_name.clone()).await?; - map.to_disktree(data_file, |w, v| w.write_all(&[*v]))?; + let mut data = vec![]; + map.to_disktree(Cursor::new(&mut data), |w, v| w.write_all(&[*v]))?; - let mut input = io::BufReader::new(File::open(file_name.clone())?); - let output = File::create(format!("{}.gz", file_name.clone()))?; - - let mut encoder = GzEncoder::new(output, Compression::default()); - io::copy(&mut input, &mut encoder)?; - encoder.finish()?; - - fs::remove_file(file_name.clone())?; + let mut writer = async_compression::tokio::write::GzipEncoder::new(disktree_file); + writer.write_all(&data).await?; + writer.shutdown().await?; Ok(()) } From 65bb5554c608e99597450ca66366e47dd6f3194f Mon Sep 17 00:00:00 2001 From: Macpie Date: Wed, 29 May 2024 10:57:58 -0700 Subject: [PATCH 18/54] Generate price report for mobile verifier --- Cargo.lock | 3 +- .../price_report.1717005120904.gz | Bin 0 -> 33 bytes .../post_migration/mobile_verifier-meta.sql | 29 +++++++++++++ test_mobile/Cargo.toml | 3 +- test_mobile/README.md | 6 ++- test_mobile/src/cli/mod.rs | 1 + test_mobile/src/cli/price.rs | 38 ++++++++++++++++++ test_mobile/src/main.rs | 4 +- 8 files changed, 79 insertions(+), 5 deletions(-) create mode 100644 docker/mobile/localstack/data/mobile-price/price_report.1717005120904.gz create mode 100644 test_mobile/src/cli/price.rs diff --git a/Cargo.lock b/Cargo.lock index 94ee9a579..84ab7995f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7854,7 +7854,8 @@ dependencies = [ "anyhow", "async-compression", "clap 4.4.8", - "flate2", + "file-store", + "helium-proto", "hextree", "tokio", ] diff --git a/docker/mobile/localstack/data/mobile-price/price_report.1717005120904.gz b/docker/mobile/localstack/data/mobile-price/price_report.1717005120904.gz new file mode 100644 index 0000000000000000000000000000000000000000..9d36716997327a2e189cc8eee3378c50bafdff9e GIT binary patch literal 33 kcmb2|=3oGW|Bo#$Bxzsx`0MK{`!*pThDqDhdw78|0LOz1?*IS* literal 0 HcmV?d00001 diff --git a/docker/mobile/postgres_seeder/post_migration/mobile_verifier-meta.sql b/docker/mobile/postgres_seeder/post_migration/mobile_verifier-meta.sql index 20f423743..95c797140 100644 --- a/docker/mobile/postgres_seeder/post_migration/mobile_verifier-meta.sql +++ b/docker/mobile/postgres_seeder/post_migration/mobile_verifier-meta.sql @@ -15,6 +15,35 @@ VALUES ) ) ON CONFLICT (key) DO UPDATE +SET + value = ( + SELECT + floor( + extract( + epoch + from + now() at time zone 'utc' + ) + ) + ); + +INSERT INTO + meta (key, value) +VALUES + ( + 'next_rewarded_end_time', + ( + SELECT + floor( + extract( + epoch + from + now() at time zone 'utc' + ) + ) + ) + ) ON CONFLICT (key) DO +UPDATE SET value = ( SELECT diff --git a/test_mobile/Cargo.toml b/test_mobile/Cargo.toml index e1e47e3e3..f9b3ab760 100644 --- a/test_mobile/Cargo.toml +++ b/test_mobile/Cargo.toml @@ -11,5 +11,6 @@ anyhow = { workspace = true } tokio = { workspace = true, features = ["io-util", "fs"] } clap = { workspace = true } hextree = { workspace = true } -flate2 = "1" +helium-proto = { workspace = true } +file-store = { path = "../file_store" } async-compression = { version = "0", features = ["tokio", "gzip"] } diff --git a/test_mobile/README.md b/test_mobile/README.md index f30c29398..94c458843 100644 --- a/test_mobile/README.md +++ b/test_mobile/README.md @@ -2,9 +2,11 @@ # Setup -## 1. Generate Mobile Verifier data +## 1. Generate data -`../target/release/test-mobile assignment` and move files [^files] to `docker/mobile/localstack/data/mobile-verifier-data-sets` +`test-mobile assignment` and move generated files [^files] to `docker/mobile/localstack/data/mobile-verifier-data-sets/` + +`test-mobile price` and move generated file to `docker/mobile/localstack/data/mobile-price/` ## 2. Build Docker images diff --git a/test_mobile/src/cli/mod.rs b/test_mobile/src/cli/mod.rs index 53a13b474..dfa13c5d4 100644 --- a/test_mobile/src/cli/mod.rs +++ b/test_mobile/src/cli/mod.rs @@ -1 +1,2 @@ pub mod assignment; +pub mod price; diff --git a/test_mobile/src/cli/price.rs b/test_mobile/src/cli/price.rs new file mode 100644 index 000000000..fa99d90b4 --- /dev/null +++ b/test_mobile/src/cli/price.rs @@ -0,0 +1,38 @@ +use std::time::{SystemTime, UNIX_EPOCH}; + +use anyhow::Result; +use file_store::FileType; +use helium_proto::{BlockchainTokenTypeV1, Message, PriceReportV1}; +use tokio::{fs::File, io::AsyncWriteExt}; + +/// Generate Mobile price report +#[derive(Debug, clap::Args)] +pub struct Cmd { + #[clap(short, long, default_value = "1000000")] + pub price: u64, +} + +impl Cmd { + pub async fn run(self) -> Result<()> { + let now = SystemTime::now() + .duration_since(UNIX_EPOCH) + .unwrap() + .as_millis(); + + let file_name = format!("{}.{now}.gz", FileType::PriceReport.to_str()); + let file = File::create(file_name).await?; + + let mobile_price_report = PriceReportV1 { + price: self.price, + timestamp: now as u64, + token_type: BlockchainTokenTypeV1::Mobile.into(), + }; + let encoded_mpr = PriceReportV1::encode_to_vec(&mobile_price_report); + + let mut writer = async_compression::tokio::write::GzipEncoder::new(file); + writer.write_all(&encoded_mpr).await?; + writer.shutdown().await?; + + Ok(()) + } +} diff --git a/test_mobile/src/main.rs b/test_mobile/src/main.rs index 4dddafdb2..4178e88b2 100644 --- a/test_mobile/src/main.rs +++ b/test_mobile/src/main.rs @@ -1,6 +1,6 @@ use anyhow::Result; use clap::Parser; -use test_mobile::cli::assignment; +use test_mobile::cli::{assignment, price}; #[derive(clap::Parser)] pub struct Cli { @@ -17,12 +17,14 @@ impl Cli { #[derive(clap::Subcommand)] pub enum Cmd { Assignment(assignment::Cmd), + Price(price::Cmd), } impl Cmd { pub async fn run(self) -> Result<()> { match self { Self::Assignment(cmd) => cmd.run().await, + Self::Price(cmd) => cmd.run().await, } } } From 0a87b081e2c6a6f691f22dabc8b7e6e662d36aa1 Mon Sep 17 00:00:00 2001 From: Macpie Date: Wed, 29 May 2024 14:10:49 -0700 Subject: [PATCH 19/54] Add reward_index --- docker/mobile/docker-compose.yml | 24 ++++++++++++++++++ .../price_report.1717005120904.gz | Bin 33 -> 0 bytes .../price_report.1717008060431.gz | Bin 0 -> 33 bytes docker/mobile/reward_index/settings.toml | 17 +++++++++++++ 4 files changed, 41 insertions(+) delete mode 100644 docker/mobile/localstack/data/mobile-price/price_report.1717005120904.gz create mode 100644 docker/mobile/localstack/data/mobile-price/price_report.1717008060431.gz create mode 100644 docker/mobile/reward_index/settings.toml diff --git a/docker/mobile/docker-compose.yml b/docker/mobile/docker-compose.yml index 6fc17bccf..6aeb63387 100644 --- a/docker/mobile/docker-compose.yml +++ b/docker/mobile/docker-compose.yml @@ -59,6 +59,7 @@ services: - AWS_ACCESS_KEY_ID=AWS_ACCESS_KEY_ID - AWS_SECRET_ACCESS_KEY=AWS_SECRET_ACCESS_KEY - AWS_SESSION_TOKEN=AWS_SESSION_TOKEN + - RUST_BACKTRACE=1 ports: - 9080:9080 volumes: @@ -76,6 +77,7 @@ services: stop_grace_period: 1s environment: - PACKAGE=mobile-config + - RUST_BACKTRACE=1 ports: - 9081:9081 volumes: @@ -99,6 +101,7 @@ services: - AWS_ACCESS_KEY_ID=AWS_ACCESS_KEY_ID - AWS_SECRET_ACCESS_KEY=AWS_SECRET_ACCESS_KEY - AWS_SESSION_TOKEN=AWS_SESSION_TOKEN + - RUST_BACKTRACE=1 volumes: - ./packet_verifier/settings.toml:/opt/mobile-packet-verifier/etc/settings.toml - ./packet_verifier/keypair.bin:/opt/mobile-packet-verifier/etc/keypair.bin @@ -128,6 +131,27 @@ services: - ./verifier/usa_and_mexico_geofence_regions/us-territories.txt:/opt/mobile-verifier/usa_and_mexico_geofence_regions/us-territories.txt - ./verifier/usa_geofence_regions/us-territories.txt:/opt/mobile-verifier/usa_geofence_regions/us-territories.txt + reward_index: + build: + context: ../.. + dockerfile: ./docker/mobile/Dockerfile + args: + - PACKAGE=reward-index + depends_on: + localstack: + condition: service_healthy + config: + condition: service_started + stop_grace_period: 1s + environment: + - PACKAGE=reward-index + - AWS_ACCESS_KEY_ID=AWS_ACCESS_KEY_ID + - AWS_SECRET_ACCESS_KEY=AWS_SECRET_ACCESS_KEY + - AWS_SESSION_TOKEN=AWS_SESSION_TOKEN + - RUST_BACKTRACE=1 + volumes: + - ./reward_index/settings.toml:/opt/reward-index/etc/settings.toml + volumes: postgres-data: localstack-data: \ No newline at end of file diff --git a/docker/mobile/localstack/data/mobile-price/price_report.1717005120904.gz b/docker/mobile/localstack/data/mobile-price/price_report.1717005120904.gz deleted file mode 100644 index 9d36716997327a2e189cc8eee3378c50bafdff9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33 kcmb2|=3oGW|Bo#$Bxzsx`0MK{`!*pThDqDhdw78|0LOz1?*IS* diff --git a/docker/mobile/localstack/data/mobile-price/price_report.1717008060431.gz b/docker/mobile/localstack/data/mobile-price/price_report.1717008060431.gz new file mode 100644 index 0000000000000000000000000000000000000000..b73a29510bfcc87b699090ea9951e8a80176f94e GIT binary patch literal 33 kcmb2|=3oGW|Bo#$BxzsRpYZRNeVdREL%oXZeO{mp0JjASzyJUM literal 0 HcmV?d00001 diff --git a/docker/mobile/reward_index/settings.toml b/docker/mobile/reward_index/settings.toml new file mode 100644 index 000000000..b9041e3ef --- /dev/null +++ b/docker/mobile/reward_index/settings.toml @@ -0,0 +1,17 @@ +modelog = "reward_index=debug,file_store=info,custom_tracing=info" +interval = "10 minutes" +mode = "mobile" + +unallocated_reward_entity_key = "131kC5gTPFfTyzziHbh2PWz2VSdF4gDvhoC5vqCz25N7LFtDocF" + +[database] +url = "postgres://postgres:postgres@postgres:5432/mobile_index" +max_connections = 10 + +[verifier] +bucket = "mobile-verifier" +region = "us-east-1" +endpoint = "http://localstack:4566" + +[metrics] +endpoint = "0.0.0.0:19000" From d6029e0cf49a9e83eb355d5c21d281bd4e626eaf Mon Sep 17 00:00:00 2001 From: Macpie Date: Wed, 29 May 2024 15:42:24 -0700 Subject: [PATCH 20/54] Improve init s3 to update timestamp and add descriptions --- docker/mobile/localstack/init-s3.sh | 53 ++++++++++++++++++++++++---- docker/mobile/postgres_seeder/run.sh | 21 +++++++++++ 2 files changed, 68 insertions(+), 6 deletions(-) diff --git a/docker/mobile/localstack/init-s3.sh b/docker/mobile/localstack/init-s3.sh index c389d58a6..3e8e36e43 100755 --- a/docker/mobile/localstack/init-s3.sh +++ b/docker/mobile/localstack/init-s3.sh @@ -6,11 +6,52 @@ awslocal s3 mb s3://mobile-packet-verifier awslocal s3 mb s3://mobile-price awslocal s3 mb s3://mobile-verifier-data-sets -DIRS=/tmp/data/* -for DIR in $DIRS; do - readarray -d "-" -t array <<<"$DIR" - bucket=$(echo $DIR | sed 's|/tmp/data/||g') - echo "Uploading $DIR to bucket $bucket" +# Description: +# This Bash script uploads files from subdirectories in /tmp/data to an S3-compatible service using awslocal. +# It treats each subdirectory as a separate bucket and uploads files with modified timestamps in their filenames. +# +# Script Overview: +# 1. Iterate Through Directories: The script iterates over each subdirectory in /tmp/data. +# 2. Extract Bucket Name: The script extracts the bucket name from each subdirectory's basename. +# 3. Process Files in Each Directory: For each file in the subdirectory, the script: +# - Prints the original file name and the bucket name for debugging purposes. +# - Generates a new file name by replacing any existing 13-digit timestamp with the current timestamp in milliseconds. +# - Prints the new file name and the S3 path for debugging purposes. +# - Uploads the file to the specified S3 bucket using awslocal s3 cp. +# +# Key Points: +# - Directories and Buckets: Each subdirectory in /tmp/data is treated as a bucket. +# - File Processing: Files within these directories are uploaded to their respective buckets with a new timestamp in their filenames. - awslocal s3 cp $DIR s3://$bucket/ --recursive +dirs=/tmp/data/* +for dir in $dirs; do + echo "Looking @ $dir" + readarray -d '/' -t array <<<"$dir" + bucket=$(echo "${array[-1]}" | tr -d '\n') + + for file in "$dir"/*; do + if [[ -f "$file" ]]; then + echo "Uploading $file to bucket $bucket" + now=$(date +%s000) + file_name=$(basename "$file") + + # Debugging output to check the file name and bucket + echo "Original file name: $file_name" + echo "Current timestamp: $now" + + # Replace timestamp in file name + new_file=$(echo "$file_name" | sed -E 's|[0-9]{13}|'"${now}"'|g') + + # Debugging output to check the new file name and bucket path + echo "New file name: $new_file" + echo "s3 path: s3://$bucket/$new_file" + + # Perform the upload + awslocal s3 cp "$file" "s3://$bucket/$new_file" + + # Debugging output to confirm upload command + echo "Executed: awslocal s3 cp \"$file\" \"s3://$bucket/$new_file\"" + echo "################################################################" + fi + done done diff --git a/docker/mobile/postgres_seeder/run.sh b/docker/mobile/postgres_seeder/run.sh index 92df8ddef..2d9e5a26a 100755 --- a/docker/mobile/postgres_seeder/run.sh +++ b/docker/mobile/postgres_seeder/run.sh @@ -1,5 +1,26 @@ #!/bin/bash +# Description: +# This Bash script performs database migrations and seeding for multiple PostgreSQL databases. +# +# Script Overview: +# - Runs migrations for the 'mobile_config' database using sqlx migrate. +# - Runs migrations for the 'mobile_packet_verifier' database using sqlx migrate. +# - Runs migrations for the 'mobile_verifier' database using sqlx migrate. +# - Runs migrations for the 'mobile_index' database using sqlx migrate. +# - Executes SQL scripts for additional post-migration tasks in each database. +# 1. Define the path to SQL script files located in the /postgres_seeder/post_migration/ directory. +# 2. Iterate through each SQL script file found in the specified directory. +# 3. Extract the database name from the file path using delimiters and manipulation. +# 4. Output a message indicating the script being executed and the corresponding database. +# 5. Use psql to connect to the PostgreSQL database and execute the SQL script. +# +# Key Points: +# - Database Migration: The script uses sqlx migrate to apply database migrations from specified sources. +# - Database Seeding: It executes SQL scripts located in /postgres_seeder/post_migration/ directory for additional setup tasks. +# - Environment Variables: Requires environment variables POSTGRES_USER, POSTGRES_PASSWORD, and POSTGRES_HOST to connect to PostgreSQL databases. +# - Script Output: Displays status messages and execution results for each migration and seeding step. + echo "#############################################" echo "Running mobile-config migrations" sqlx migrate run --database-url postgres://$POSTGRES_USER:$POSTGRES_PASSWORD@$POSTGRES_HOST:5432/mobile_config --source /mobile_config/migrations From eb067d58e6bd02cc4f2ef9c38cec69782114671c Mon Sep 17 00:00:00 2001 From: Macpie Date: Wed, 29 May 2024 16:15:04 -0700 Subject: [PATCH 21/54] Add add server up in test --- Cargo.lock | 4 +++ test_mobile/Cargo.toml | 14 +++++++--- test_mobile/tests/docker/mod.rs | 38 +++++++++++++++++++++++++++ test_mobile/tests/integration_test.rs | 20 +++++++++++--- 4 files changed, 68 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 84ab7995f..9cb089c3b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7854,10 +7854,14 @@ dependencies = [ "anyhow", "async-compression", "clap 4.4.8", + "custom-tracing", "file-store", "helium-proto", "hextree", "tokio", + "tonic", + "tracing", + "tracing-subscriber", ] [[package]] diff --git a/test_mobile/Cargo.toml b/test_mobile/Cargo.toml index f9b3ab760..890c66612 100644 --- a/test_mobile/Cargo.toml +++ b/test_mobile/Cargo.toml @@ -8,9 +8,15 @@ license.workspace = true [dependencies] anyhow = { workspace = true } -tokio = { workspace = true, features = ["io-util", "fs"] } +async-compression = { version = "0", features = ["tokio", "gzip"] } clap = { workspace = true } -hextree = { workspace = true } -helium-proto = { workspace = true } file-store = { path = "../file_store" } -async-compression = { version = "0", features = ["tokio", "gzip"] } +helium-proto = { workspace = true } +hextree = { workspace = true } +tokio = { workspace = true, features = ["io-util", "fs"] } + +[dev-dependencies] +tracing = { workspace = true } +tracing-subscriber = { workspace = true } +custom-tracing = { path = "../custom_tracing" } +tonic = { workspace = true } diff --git a/test_mobile/tests/docker/mod.rs b/test_mobile/tests/docker/mod.rs index ad890835c..3f238911f 100644 --- a/test_mobile/tests/docker/mod.rs +++ b/test_mobile/tests/docker/mod.rs @@ -1,5 +1,7 @@ use anyhow::{bail, Result}; +use std::time::Duration; use tokio::process::Command; +use tonic::transport::{Channel, Uri}; pub async fn up() -> Result { let up_output = Command::new("docker") @@ -35,3 +37,39 @@ pub async fn down() -> Result { bail!(stderr) } } + +pub async fn check_ingest_up( + endpoint: &str, + max_retries: u32, + retry_delay: Duration, +) -> Result<()> { + let mut retries = 0; + + loop { + let uri = endpoint.parse::()?; + + match Channel::builder(uri) + .connect_timeout(Duration::from_secs(5)) + .timeout(Duration::from_secs(5)) + .http2_keep_alive_interval(Duration::from_secs(10)) + .keep_alive_timeout(Duration::from_secs(5)) + .connect() + .await + { + Ok(_) => { + return Ok(()); + } + Err(e) => { + retries += 1; + if retries >= max_retries { + return Err(anyhow::anyhow!(format!( + "Failed to connect to server after {} retries: {:?}", + max_retries, e + ))); + } else { + tokio::time::sleep(retry_delay).await; + } + } + } + } +} diff --git a/test_mobile/tests/integration_test.rs b/test_mobile/tests/integration_test.rs index 0ad239b30..ba3127572 100644 --- a/test_mobile/tests/integration_test.rs +++ b/test_mobile/tests/integration_test.rs @@ -1,17 +1,29 @@ use anyhow::Result; use std::time::Duration; -use tokio::time::sleep; mod docker; #[tokio::test] async fn main() -> Result<()> { + custom_tracing::init("info".to_string(), custom_tracing::Settings::default()).await?; + match docker::up().await { - Ok(_) => {} - Err(e) => panic!("{:?}", e), + Ok(_) => { + tracing::info!("docker compose started") + } + Err(e) => panic!("docker::up failed: {:?}", e), } - sleep(Duration::from_secs(10)).await; + let endpoint = "http://127.0.0.1:9080"; + let max_retries = 10; + let retry_delay = Duration::from_secs(1); + + match docker::check_ingest_up(endpoint, max_retries, retry_delay).await { + Ok(_) => { + tracing::info!("Ingest is UP, lets go!") + } + Err(e) => panic!("docker::check_ingest_up failed: {:?}", e), + } docker::down().await?; From 1be6341ba977ad50cd2556d8d1699791bc79dd32 Mon Sep 17 00:00:00 2001 From: Macpie Date: Thu, 30 May 2024 12:30:31 -0700 Subject: [PATCH 22/54] Test skeleton --- Cargo.lock | 4 ++ test_mobile/Cargo.toml | 8 ++- test_mobile/tests/docker/mod.rs | 75 ++++++++++++++++----------- test_mobile/tests/integration_test.rs | 58 +++++++++++++++++++-- 4 files changed, 111 insertions(+), 34 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9cb089c3b..0eb1adadd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7853,11 +7853,15 @@ version = "0.1.0" dependencies = [ "anyhow", "async-compression", + "backon", "clap 4.4.8", "custom-tracing", "file-store", + "helium-crypto", "helium-proto", "hextree", + "prost", + "rand 0.8.5", "tokio", "tonic", "tracing", diff --git a/test_mobile/Cargo.toml b/test_mobile/Cargo.toml index 890c66612..0a523965b 100644 --- a/test_mobile/Cargo.toml +++ b/test_mobile/Cargo.toml @@ -16,7 +16,11 @@ hextree = { workspace = true } tokio = { workspace = true, features = ["io-util", "fs"] } [dev-dependencies] -tracing = { workspace = true } -tracing-subscriber = { workspace = true } +backon = "0" custom-tracing = { path = "../custom_tracing" } +helium-crypto = { workspace = true } +prost = { workspace = true } +rand = { workspace = true } tonic = { workspace = true } +tracing = { workspace = true } +tracing-subscriber = { workspace = true } diff --git a/test_mobile/tests/docker/mod.rs b/test_mobile/tests/docker/mod.rs index 3f238911f..f4737cc41 100644 --- a/test_mobile/tests/docker/mod.rs +++ b/test_mobile/tests/docker/mod.rs @@ -1,40 +1,57 @@ use anyhow::{bail, Result}; +use std::process::Command; use std::time::Duration; -use tokio::process::Command; use tonic::transport::{Channel, Uri}; -pub async fn up() -> Result { - let up_output = Command::new("docker") - .current_dir("../docker/mobile/") - .arg("compose") - .arg("up") - .arg("-d") - .output() - .await?; +pub struct Docker; - if up_output.status.success() { - let stdout = String::from_utf8(up_output.stdout)?; - Ok(stdout) - } else { - let stderr = String::from_utf8(up_output.stderr)?; - bail!(stderr) +impl Docker { + pub fn new() -> Self { + Self + } + + pub fn up(&self) -> Result { + let up_output = Command::new("docker") + .current_dir("../docker/mobile/") + .arg("compose") + .arg("up") + .arg("-d") + .output()?; + + if up_output.status.success() { + let stdout = String::from_utf8(up_output.stdout)?; + Ok(stdout) + } else { + let stderr = String::from_utf8(up_output.stderr)?; + bail!(stderr) + } } -} -pub async fn down() -> Result { - let up_output = Command::new("docker") - .current_dir("../docker/mobile/") - .arg("compose") - .arg("down") - .output() - .await?; + fn down(&self) -> Result { + let up_output = Command::new("docker") + .current_dir("../docker/mobile/") + .arg("compose") + .arg("down") + .output()?; - if up_output.status.success() { - let stdout = String::from_utf8(up_output.stdout)?; - Ok(stdout) - } else { - let stderr = String::from_utf8(up_output.stderr)?; - bail!(stderr) + if up_output.status.success() { + let stdout = String::from_utf8(up_output.stdout)?; + Ok(stdout) + } else { + let stderr = String::from_utf8(up_output.stderr)?; + bail!(stderr) + } + } +} + +impl Drop for Docker { + fn drop(&mut self) { + // This code runs when the scope exits, including if the test fails. + tracing::info!("Test finished. Performing cleanup."); + match self.down() { + Ok(_) => tracing::info!("stack went down"), + Err(e) => tracing::error!("docker compose down failed: {:?}", e), + } } } diff --git a/test_mobile/tests/integration_test.rs b/test_mobile/tests/integration_test.rs index ba3127572..3ac84eea6 100644 --- a/test_mobile/tests/integration_test.rs +++ b/test_mobile/tests/integration_test.rs @@ -1,5 +1,15 @@ use anyhow::Result; -use std::time::Duration; +use backon::{ExponentialBuilder, Retryable}; +use docker::Docker; +use helium_crypto::{KeyTag, Keypair, Sign}; +use helium_proto::services::poc_mobile::{Client as PocMobileClient, SpeedtestReqV1}; +use prost::Message; +use rand::rngs::OsRng; +use std::{ + str::FromStr, + time::{Duration, SystemTime, UNIX_EPOCH}, +}; +use tonic::metadata::MetadataValue; mod docker; @@ -7,7 +17,9 @@ mod docker; async fn main() -> Result<()> { custom_tracing::init("info".to_string(), custom_tracing::Settings::default()).await?; - match docker::up().await { + let docker = Docker::new(); + + match docker.up() { Ok(_) => { tracing::info!("docker compose started") } @@ -25,7 +37,47 @@ async fn main() -> Result<()> { Err(e) => panic!("docker::check_ingest_up failed: {:?}", e), } - docker::down().await?; + // let _ = tokio::time::sleep(Duration::from_secs(10)).await; + + let mut client = (|| PocMobileClient::connect(endpoint)) + .retry(&ExponentialBuilder::default()) + .await + .expect("client connect"); + + let hotspot1 = generate_keypair(); + let now = SystemTime::now() + .duration_since(UNIX_EPOCH) + .unwrap() + .as_millis(); + + let mut speedtest_req = SpeedtestReqV1 { + pub_key: hotspot1.public_key().into(), + serial: "hotspot1-serial".to_string(), + timestamp: now as u64, + upload_speed: 100, + download_speed: 100, + latency: 25, + signature: vec![], + }; + + speedtest_req.signature = hotspot1.sign(&speedtest_req.encode_to_vec()).expect("sign"); + + let mut request = tonic::Request::new(speedtest_req); + + let metadata_value = MetadataValue::from_str("Bearer api-token").unwrap(); + request + .metadata_mut() + .insert("authorization", metadata_value); + + let _r = client.submit_speedtest(request).await?; + + // let _ = tokio::time::sleep(Duration::from_secs(2)).await; + + // assert_eq!(true, false); Ok(()) } + +fn generate_keypair() -> Keypair { + Keypair::generate(KeyTag::default(), &mut OsRng) +} From 47b475f882e43c4d3fb1b26403d5737022257749 Mon Sep 17 00:00:00 2001 From: Macpie Date: Thu, 30 May 2024 12:31:18 -0700 Subject: [PATCH 23/54] Simplify script --- docker/mobile/localstack/init-s3.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docker/mobile/localstack/init-s3.sh b/docker/mobile/localstack/init-s3.sh index 3e8e36e43..98bd5e0ff 100755 --- a/docker/mobile/localstack/init-s3.sh +++ b/docker/mobile/localstack/init-s3.sh @@ -26,8 +26,7 @@ awslocal s3 mb s3://mobile-verifier-data-sets dirs=/tmp/data/* for dir in $dirs; do echo "Looking @ $dir" - readarray -d '/' -t array <<<"$dir" - bucket=$(echo "${array[-1]}" | tr -d '\n') + bucket=$(basename "$dir") for file in "$dir"/*; do if [[ -f "$file" ]]; then From 4aaf9e6a3b8ffe35ca5b9a60283df45efdfcda7b Mon Sep 17 00:00:00 2001 From: Macpie Date: Thu, 30 May 2024 13:06:20 -0700 Subject: [PATCH 24/54] Test cleanup --- Cargo.lock | 1 + test_mobile/Cargo.toml | 1 + test_mobile/tests/common/docker.rs | 54 ++++++++++++++++ test_mobile/tests/common/hotspot.rs | 76 ++++++++++++++++++++++ test_mobile/tests/common/mod.rs | 2 + test_mobile/tests/docker/mod.rs | 92 --------------------------- test_mobile/tests/integration_test.rs | 75 ++++------------------ 7 files changed, 145 insertions(+), 156 deletions(-) create mode 100644 test_mobile/tests/common/docker.rs create mode 100644 test_mobile/tests/common/hotspot.rs create mode 100644 test_mobile/tests/common/mod.rs delete mode 100644 test_mobile/tests/docker/mod.rs diff --git a/Cargo.lock b/Cargo.lock index 0eb1adadd..2bd5fc2e0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7854,6 +7854,7 @@ dependencies = [ "anyhow", "async-compression", "backon", + "bs58 0.4.0", "clap 4.4.8", "custom-tracing", "file-store", diff --git a/test_mobile/Cargo.toml b/test_mobile/Cargo.toml index 0a523965b..4d0dade1b 100644 --- a/test_mobile/Cargo.toml +++ b/test_mobile/Cargo.toml @@ -17,6 +17,7 @@ tokio = { workspace = true, features = ["io-util", "fs"] } [dev-dependencies] backon = "0" +bs58 = { workspace = true } custom-tracing = { path = "../custom_tracing" } helium-crypto = { workspace = true } prost = { workspace = true } diff --git a/test_mobile/tests/common/docker.rs b/test_mobile/tests/common/docker.rs new file mode 100644 index 000000000..a5808627b --- /dev/null +++ b/test_mobile/tests/common/docker.rs @@ -0,0 +1,54 @@ +use anyhow::{bail, Result}; +use std::process::Command; + +pub struct Docker; + +impl Docker { + pub fn new() -> Self { + Self + } + + pub fn up(&self) -> Result { + let up_output = Command::new("docker") + .current_dir("../docker/mobile/") + .arg("compose") + .arg("up") + .arg("-d") + .output()?; + + if up_output.status.success() { + let stdout = String::from_utf8(up_output.stdout)?; + Ok(stdout) + } else { + let stderr = String::from_utf8(up_output.stderr)?; + bail!(stderr) + } + } + + fn stop(&self) -> Result { + let up_output = Command::new("docker") + .current_dir("../docker/mobile/") + .arg("compose") + .arg("stop") + .output()?; + + if up_output.status.success() { + let stdout = String::from_utf8(up_output.stdout)?; + Ok(stdout) + } else { + let stderr = String::from_utf8(up_output.stderr)?; + bail!(stderr) + } + } +} + +impl Drop for Docker { + fn drop(&mut self) { + // This code runs when the scope exits, including if the test fails. + tracing::info!("Test finished. Performing cleanup."); + match self.stop() { + Ok(_) => tracing::info!("docker stack stopped"), + Err(e) => tracing::error!("docker compose stopped failed: {:?}", e), + } + } +} diff --git a/test_mobile/tests/common/hotspot.rs b/test_mobile/tests/common/hotspot.rs new file mode 100644 index 000000000..be6b298d3 --- /dev/null +++ b/test_mobile/tests/common/hotspot.rs @@ -0,0 +1,76 @@ +use anyhow::Result; +use backon::{ExponentialBuilder, Retryable}; +use helium_crypto::{KeyTag, Keypair, Sign}; +use helium_proto::services::poc_mobile::{Client as PocMobileClient, SpeedtestReqV1}; +use prost::Message; +use rand::rngs::OsRng; +use std::{ + str::FromStr, + time::{SystemTime, UNIX_EPOCH}, +}; +use tonic::{metadata::MetadataValue, transport::Channel}; + +pub struct Hotspot { + client: PocMobileClient, + keypair: Keypair, +} + +impl Hotspot { + pub async fn new() -> Self { + let endpoint = "http://127.0.0.1:9080"; + + let client = (|| PocMobileClient::connect(endpoint)) + .retry(&ExponentialBuilder::default()) + .await + .expect("client connect"); + + let keypair = Keypair::generate(KeyTag::default(), &mut OsRng); + + let b58 = keypair_to_bs58(&keypair); + + tracing::info!("hotspot {b58} connected to ingester"); + + Self { client, keypair } + } + + pub async fn submit_speedtest(mut self) -> Result<()> { + let mut speedtest_req = SpeedtestReqV1 { + pub_key: self.keypair.public_key().into(), + serial: "hotspot1-serial".to_string(), + timestamp: now() as u64, + upload_speed: 100, + download_speed: 100, + latency: 25, + signature: vec![], + }; + + speedtest_req.signature = self + .keypair + .sign(&speedtest_req.encode_to_vec()) + .expect("sign"); + + let mut request = tonic::Request::new(speedtest_req.clone()); + + let metadata_value = MetadataValue::from_str("Bearer api-token").unwrap(); + request + .metadata_mut() + .insert("authorization", metadata_value); + + let _r = self.client.submit_speedtest(request).await?; + + tracing::debug!("submitted speedtest {:?}", speedtest_req); + + Ok(()) + } +} + +fn now() -> u64 { + SystemTime::now() + .duration_since(UNIX_EPOCH) + .unwrap() + .as_millis() as u64 +} + +fn keypair_to_bs58(keypair: &Keypair) -> String { + bs58::encode(keypair.public_key().to_vec()).into_string() +} diff --git a/test_mobile/tests/common/mod.rs b/test_mobile/tests/common/mod.rs new file mode 100644 index 000000000..ef044b112 --- /dev/null +++ b/test_mobile/tests/common/mod.rs @@ -0,0 +1,2 @@ +pub mod docker; +pub mod hotspot; diff --git a/test_mobile/tests/docker/mod.rs b/test_mobile/tests/docker/mod.rs deleted file mode 100644 index f4737cc41..000000000 --- a/test_mobile/tests/docker/mod.rs +++ /dev/null @@ -1,92 +0,0 @@ -use anyhow::{bail, Result}; -use std::process::Command; -use std::time::Duration; -use tonic::transport::{Channel, Uri}; - -pub struct Docker; - -impl Docker { - pub fn new() -> Self { - Self - } - - pub fn up(&self) -> Result { - let up_output = Command::new("docker") - .current_dir("../docker/mobile/") - .arg("compose") - .arg("up") - .arg("-d") - .output()?; - - if up_output.status.success() { - let stdout = String::from_utf8(up_output.stdout)?; - Ok(stdout) - } else { - let stderr = String::from_utf8(up_output.stderr)?; - bail!(stderr) - } - } - - fn down(&self) -> Result { - let up_output = Command::new("docker") - .current_dir("../docker/mobile/") - .arg("compose") - .arg("down") - .output()?; - - if up_output.status.success() { - let stdout = String::from_utf8(up_output.stdout)?; - Ok(stdout) - } else { - let stderr = String::from_utf8(up_output.stderr)?; - bail!(stderr) - } - } -} - -impl Drop for Docker { - fn drop(&mut self) { - // This code runs when the scope exits, including if the test fails. - tracing::info!("Test finished. Performing cleanup."); - match self.down() { - Ok(_) => tracing::info!("stack went down"), - Err(e) => tracing::error!("docker compose down failed: {:?}", e), - } - } -} - -pub async fn check_ingest_up( - endpoint: &str, - max_retries: u32, - retry_delay: Duration, -) -> Result<()> { - let mut retries = 0; - - loop { - let uri = endpoint.parse::()?; - - match Channel::builder(uri) - .connect_timeout(Duration::from_secs(5)) - .timeout(Duration::from_secs(5)) - .http2_keep_alive_interval(Duration::from_secs(10)) - .keep_alive_timeout(Duration::from_secs(5)) - .connect() - .await - { - Ok(_) => { - return Ok(()); - } - Err(e) => { - retries += 1; - if retries >= max_retries { - return Err(anyhow::anyhow!(format!( - "Failed to connect to server after {} retries: {:?}", - max_retries, e - ))); - } else { - tokio::time::sleep(retry_delay).await; - } - } - } - } -} diff --git a/test_mobile/tests/integration_test.rs b/test_mobile/tests/integration_test.rs index 3ac84eea6..604a6a38e 100644 --- a/test_mobile/tests/integration_test.rs +++ b/test_mobile/tests/integration_test.rs @@ -1,21 +1,16 @@ use anyhow::Result; -use backon::{ExponentialBuilder, Retryable}; -use docker::Docker; -use helium_crypto::{KeyTag, Keypair, Sign}; -use helium_proto::services::poc_mobile::{Client as PocMobileClient, SpeedtestReqV1}; -use prost::Message; -use rand::rngs::OsRng; -use std::{ - str::FromStr, - time::{Duration, SystemTime, UNIX_EPOCH}, -}; -use tonic::metadata::MetadataValue; +use common::{docker::Docker, hotspot::Hotspot}; +use std::time::Duration; -mod docker; +mod common; #[tokio::test] async fn main() -> Result<()> { - custom_tracing::init("info".to_string(), custom_tracing::Settings::default()).await?; + custom_tracing::init( + "info,integration_test=debug".to_string(), + custom_tracing::Settings::default(), + ) + .await?; let docker = Docker::new(); @@ -26,58 +21,10 @@ async fn main() -> Result<()> { Err(e) => panic!("docker::up failed: {:?}", e), } - let endpoint = "http://127.0.0.1:9080"; - let max_retries = 10; - let retry_delay = Duration::from_secs(1); + let hotspot1 = Hotspot::new().await; + hotspot1.submit_speedtest().await?; - match docker::check_ingest_up(endpoint, max_retries, retry_delay).await { - Ok(_) => { - tracing::info!("Ingest is UP, lets go!") - } - Err(e) => panic!("docker::check_ingest_up failed: {:?}", e), - } - - // let _ = tokio::time::sleep(Duration::from_secs(10)).await; - - let mut client = (|| PocMobileClient::connect(endpoint)) - .retry(&ExponentialBuilder::default()) - .await - .expect("client connect"); - - let hotspot1 = generate_keypair(); - let now = SystemTime::now() - .duration_since(UNIX_EPOCH) - .unwrap() - .as_millis(); - - let mut speedtest_req = SpeedtestReqV1 { - pub_key: hotspot1.public_key().into(), - serial: "hotspot1-serial".to_string(), - timestamp: now as u64, - upload_speed: 100, - download_speed: 100, - latency: 25, - signature: vec![], - }; - - speedtest_req.signature = hotspot1.sign(&speedtest_req.encode_to_vec()).expect("sign"); - - let mut request = tonic::Request::new(speedtest_req); - - let metadata_value = MetadataValue::from_str("Bearer api-token").unwrap(); - request - .metadata_mut() - .insert("authorization", metadata_value); - - let _r = client.submit_speedtest(request).await?; - - // let _ = tokio::time::sleep(Duration::from_secs(2)).await; - - // assert_eq!(true, false); + let _ = tokio::time::sleep(Duration::from_secs(10)).await; Ok(()) } - -fn generate_keypair() -> Keypair { - Keypair::generate(KeyTag::default(), &mut OsRng) -} From e98e7b5eb3a07a567281a3281d52d654d2335c0f Mon Sep 17 00:00:00 2001 From: Macpie Date: Thu, 30 May 2024 13:12:33 -0700 Subject: [PATCH 25/54] Update readme --- test_mobile/README.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/test_mobile/README.md b/test_mobile/README.md index 94c458843..42568cd19 100644 --- a/test_mobile/README.md +++ b/test_mobile/README.md @@ -4,13 +4,20 @@ ## 1. Generate data -`test-mobile assignment` and move generated files [^files] to `docker/mobile/localstack/data/mobile-verifier-data-sets/` +**NOTE:** Data is auto generated if you do no wish to change it skip these steps. The commands are here to show how the data is generated. -`test-mobile price` and move generated file to `docker/mobile/localstack/data/mobile-price/` +- `test-mobile assignment` and move generated files [^files] to `docker/mobile/localstack/data/mobile-verifier-data-sets/` +- `test-mobile price` and move generated file to `docker/mobile/localstack/data/mobile-price/` ## 2. Build Docker images -`cd docker && docker compose build` +- `cd docker && docker compose build` + +## 3. Run test + +- `cargo test --package test-mobile --test integration_test -- --nocapture` + +**NOTE:** The test will `docker compose up` on start and `docker compose stop` at the end, it is up to **you** to `docker compose down` if you want to clean up. [^files]: Maps of hexes used From a5b59d6d04e0e0dd188b4eff7ba1edc3f42dce93 Mon Sep 17 00:00:00 2001 From: Macpie Date: Thu, 30 May 2024 13:16:07 -0700 Subject: [PATCH 26/54] Add docs --- test_mobile/docs/hexes.jpg | Bin 0 -> 609324 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test_mobile/docs/hexes.jpg diff --git a/test_mobile/docs/hexes.jpg b/test_mobile/docs/hexes.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a71c7684de41df1aab2143fa8e8f796a104da920 GIT binary patch literal 609324 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

1>lK9Uo@e;;H9x(`0uV^20Bay2 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 z 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%0Du;*uvP--`;9{4dit_%-f^v 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ⅆxq942(^(!6V6g*N??a65fSt8vWtN z4mT=hAZgbKP6{N6jgNL~yw0}*wrYn@Sq&sW0O#EwJD8tojh)pnY(s@@iB++ z$GC94{A6p~j$45dRpWwLl&$I~S%K_)qcth7Vw(j|4TBI|MfN%zHrp_l@U^L57+zn5 z(Eb$E)rF2QM$(>JB+Kt57!~X$Yb0AP6}P`C4f*n_G9H7H+ss_n2-K1|XZXY3S=4wy7IR zkyl_kL}VfpIBL;5`6rn+FA!F0jpts|t+2aEIK3dc#$AX%4S4Cj>dRZZgKQY1J}Z3k zeXiV}GEgq;oh%BOD0k#zs}ZcA+`6TGJ=sn16?^`N3W@e__H;#;!l6>lf*d5s6X;b& zHEBLkLQKtJr?c{SVn5GyuGfAMDUV(^%nrz+)q8_7YU+tG?$|Bs=7GcMIz96_3LLrG z$&ex#-DOeN`iCpvGycv_V? z^YEqvVvkzJpbcc#O`h5KJSm^N7i)10<$H?Y_?Ga|w=fy=n}wMb!4D+*cxpWcb23S( z%z`rPugB;^P&$3p}pw>lHYY=!&kE3+?tT+FTXLJc4zg&TM%u|jZ|K!m3DUW zSk)gU^BvyzKZ`|QC1uTfiS{RhW$)adiTXTg9cPiLVj`G{8&qMZInk2#Ev#za%xrAl zmzG2>tnA0{XsPl6(AbEfV}~W%)=3-{I|9O3^jY*jJ98rFQIHN#B?4mY{-|Qvga`54 z1(XUD;}87-aB&d?4i<7N2)%J-Vzy>BP0)^%K(L8}qQJu$pnm`-h{omUe5BbC#yDOs z*ja-eW#yK>)zq;-8}IEP+Y+zqZ>V#qH4tA6d0uefq@}u^P@>O!StOBxqHwmp&!HG| zqzSAg=yD|pHVZrnp7V(nXO;g3DLWG@|5VzZP4f)%|Zs9*kFCa;?Fg6scXCS+nVamuO(RhyHsz6jJE1p-^#zQFX=xm+(OhS~L@ z|6JKv8VFb$v|z2z+{;N#U?#|~WQZHn{;$P+5+ScS>OHh_!5YWtme7+SuCYNhf`y zdwMXRwhA7VuPSr z59GJ`oR~Owqq*X(qXk^jI#S936qp%un-&}sMi^$ zgdrMfz<)oQl$0q?q6SUV-Tm#m%03R63DQoD)ZVW-$pT-t_lwH?^iBSzD_fJl71*-) z34Ia`CU}7Au6BrPYIQFsGURL=YrnHibDv0eg_j-^hg>b%RnEpaL)z3Gv8(!6b-$mV zE{K+q_qvw+oNlkX%1mS^qtUTk#c?K~^6?PRX;VkV;QE8K80WoE@Il#S+z2Da`rM>r? zFNYW19npD%v}fHyg3FNGc#lZ}?wbd~HcXh7!1r8}=Xd~ko1Nka0$Lr)plR-yd^ zw+z=O_XL)qWZ`N5@@Q7S#dlfIO$84yLyXQlw=y`x9Pah2o_jA8+Ac)?3@4c7RdtJTv&RUkubN%jnp8w4M-Sfii3p0kx zIp_MGPi60Lm5pV)40J*_h{uP*KT&9Cqs(*rPQ2EBLMuvj;&@-4R7SzBk18MRG<{IL z-O2G#;IJJf4Y1)oh}I~dw$vDZSnIA_ub5rYl|{*yq{1%QgJE6e3aJskN@#! zAli$5Za=f~${|EBzxSY%KjM|tpdKGJr_tUMc4LXNCoKa4Y+H-tJ6(ziP@~!R`A)c1 zY2`!KXkm}Ndq9!H_#?A$AA)FQ5cO3vnc=;pi~>va-CGdkLeO8M&=z^J@}y=FL5!eJ zWzQq$UN+B5_ni0Z+_JlbujeV}HrH}2>&)+ydQp~V_y2z9luSBSmO=kx)4haV$l%N} zw7k)8Zt92<^ZDwT$*Q-sJJxULf+WkD>g-<>x;viK%l{c59P!FuF$P=ejMu}{E$%5( z-wGU^ZmWb1ot<_XgE@R!qr#Te&lT@rlt1~!0Ln>BMo?^AkM+vgM@GWI4)XFOObmeD zsKwNBJ^2vkQ5IZ~pIFo3vSTEb zrUCMB62#@jV*1Ns?}XOGAyVVe%Iz@GkYsFE11Zjuy%4aQH!HlAPuY#ee7S9Hh=jx_ zt*Y#<-q1dE0lV5PjgRL`L^;%PcKQrVX}tfD+Wrx=a$~|F1%-gq9>oMHbV<*vHLr1B(A`mzYZqcUM_8d`=TPX{kLw|l z6*-TtE9We2<%IrNrJ)gixvm(Z%elEh@Y4~b35*k|nf$vP`s$}Hl1WX9P0)%y$%t%| zx6npDEZn*2&ADXJk807F=0-42_Z*R%5RImFb^Ow~kHD^zBwc}HcHz}?N4A>%Mrf$| zOphtI`f7L+54%e4WH0W=*M0{t|AF2`I8Sz!Lq~NaPVVr1{B;;=7Ve9PJ)TvI^_^bs zDDZus6|&6ek`kLaYNTZKi{!9>?5*6YxoOKz8WfHVa~i|MlHbw~JVtI=e9Usd1*@DE zTgpb%%H_x%%8+ash}HYP-yIPU^EcwK1rOduV!E^pAH}uQ}k?>FTtJ_ty0i%Gbnlx{U2Ixu* zgd>jxIYS9Re%h&cCs{Enp8gY6FCyhCeyjE3`L~lEptO={zFw@A%7;LXc~&6mZ;iUr zob-QpJZ?5&eeyE0>*n6Nr+QMB;_D}}EroxesPmOhJXo-=ZK?0;nUOWxq@w3?b0}36 z>=VjR)1zI%I_k1Q5a^5JBj4GxfzE@j#F1}jQgT2Uv?< zhMPW5Q<@PZSMydN%n`ziDuYy*Ye-knD#D}Vi21U~eX5juV~ScxiP5t;$8=oN{poom z{!;(mH>2FG1atN~aRRRr6-!Fd3HNRHn!MvBpSn7O(cqyfp^)L^Q^#%J+QgRlYqwhD z`5c-|Z9(aZ&G%y953N?5Ji97;09#YuN;;ktlX9_*Oi~TH z$^La$xC8@+$1vwbFK>x9WVlDlRy+8}UKf-j72=%eJuzgma-GGBiJ;RdMuUI&!iXl0 zo+TVmj9DAfwN6#MU{C_D7*9bfMFFVk{M(ultWjVrj?}pDtC)*JIfe{R*oz6Qe(LmC3&p%#G_ZWfV{2#=sIgxTu8QJ zV$!bCcc-Y16Uwk6sTX_kVTJxqEk`EL@RaMSjIM8(Q^Bu2dIh+H<^bXB@u!pTv906B zMm`dMun!aWbYt23W+?FS(P+*|F+}LU04wD*X~mzFf0>m(ZJk?}4KwahTZAn0a~@Zu z?+?9uP|h-Ap0ru63``s1=Koz7HG)vJ65qAM^nI;QA72puI(qN9MK3Y#z%sb7MasdB zp(t!4zoT?H*RgRwUao@7|MpYLP}zL!Ra0;JrmJYCQ&}Gkqyy}#k2ngr<{3gzWa4^m{Bqrm>CQdBQ%$D@-ctfo9{0xQ-|q zsk3+GF#8~bws{Q$92OxT2(q_zM7VkaKMW$xg0+6T7fI06(Zpp)v^^hs zeNt6<`9lBc0A$$>ukA2bmPE%{ucagfxLWm7eKrI$TkP+*d9QE5t^)?mPR-15OT6uJ zN?Ia{1+{)K2I9@Ij=6r4494DlWd6uw=ySCerw0AR8*8R7KY}>n0ib>P!$%VJWzRnQ zRji&4$^NR?UN%M9Jz32F^c=(Iri~78h4H4B>U^$yMjENmCrWriP123!9g*Ywo8j&} zF^t6NwJU4n!?s#9N~D#&ui~^3QE>=7Y)<)(cI<`HM|Q4d+|y;yYBymPjlUT~Pi~D> zMpjN=fuqAVVnmFeW|vQ04#ttr_qpDTKEMZ&R$OY1bRD28NlNVfa&_J|{U`(^DsmXt zyLUJ7=LkrP;pe`{9C|6XeZ0QAqW6PZ|J52dx4Htg#zTrAaSF^iCf%KULoG8$nSWw@ z;scpXM{MY$kCF^?d9!TRMSDV(L~)b$i?_kr4rRP;>5D?%So+I$OKo?)GR!I`oy4*; z{D9!vH|~~TS>UPgmU5<6ZFv7quO4*;OpvkSROEr|e;jL}JU3IUmbl@(!??uZxc~l| z#9wxa9BRKm6H;&ZOHrTS;^NZ(IFvOJXK&5QpSOPYbl*F?=ut_rg}j-4SfTLVEmr?7 zho|IleuqIzc=nWr^EhMp**{Q(>nIk=-N2r(@5BHW<6!=l&C$ZR{VnK7m2V-|6YLp{ zb-@#4NYd!j@BaeT5uUhRNK{)O66+c$iD{6;J}Kxtq|!mrI|{>yt>e?^d~Jn(xy>OU zkN5005&A+8-V5uXHpCe;M$PC<9cH+k+&1r1k*rsu(BlCL^UqMXit4C^V91g7!nRAK ze4v*mCHnTKk5=ozo-*`k#T`EMCG$c|0shITG4yoSmh&b@XLeizoTo6LYdU+Ehp1B8rKPwPHQ8L@KxTijxdN%(+gM-Fr2#Ref6zsS6Gm7zpSsX%=%64}} zSKsgON1tFRp}AAI3@CD}QGCpjn?%;Mx#$aE$?|S;i~rq%S1`m101_DK4_KP-K*RyW zfhq4OmJxz6qe?xmR~4yQQI~!D;xLA3&UhiR=f5=SVCp};1)m8|E~((DOb+%)gn>e+ z7*lGku6>e;?jx@`o@1lSB2d>a;4Omk!&N`ZHhi>Mu!nkkFBhH+B?^h32({iI9;qm37*o*dFM?z!Kos!pSXs*(U|q5>=2;BxuO!`Xn6~1dobSM17eH zN^_?~rtfQ?-I6*7Ve}RvN+l|Ifw*@4-I{z_nc1~D-=-+)kr^t_g*sfK&~t(QU;SU! zkuS3_-m({Y>k{V}ec9`RS7Ef*HTot*RdQs)>u=2@FXRRe`Z|Lm=i4*+eBKZf%mP&V z9iu|=2klulAV1-Fv8?un^e6apns;YgB>LkYotW)@r{L;%du(1&_j6c27giJiu56kA#^k~0M(==pa zWwT@^!V~tPWvop0*umIJzFkxv%n{&I&_&|NQQA00k?r#fAF(V?)l}qv{>pUfh=~Gt z808GpKi@W$Q%`;21)fdZIOd$EJAeS7QU8#5PsHk~C);Sa+iGr^uzUopBXKaPozZ~A z>FJu49Gv1(+PC8jctv+&pYeY{#afP}6qwAa z@^1ZEd(XQO^tZfEwA!mIPcwE3D57qEBKuy{q_yam_4^V%-5Lrj?a#|GddhycccX;Q zlM6aM31G|F03T$3AAfCqPMM>%Y5gIRdB(`zQ?bN26Ut0j+aX2))uLpwZs8_Lj%KXo`pL?oc$r8G45v5iAlO)ak<;j_qNqPtbze6rOqU=6 zzGAa#IaQvH(?uppAPFX<2?k5{{P%M;y-b9hrE~M{S_Eg|r`^K8(Y|f0;y)=&s>L9< zNu0My#Kd-M|3FS8BhXb9__#Fa^DMV=ZYtLiM&4eo?w12C7MPzz`3FA3DnWY$8Iw*H zttLnlI~_ZKU4OpkxPU2OTlAgX#^p-KAIuk)3JvA|NoyydoB=Pe-3K?>EN2xL3on4E z{Ke0oo*_$V*UGwJ1b1&IvM29&ut@tl47b&3Y}0tQF3gO-UC_l6JP2-o&~)jpETZ2x zGJhrWY-ZClY4C{P zOaIMj+9`X5_8kQGujMo?MlX$>$101-67z6gVwKBO*&tDV{wXSO6>i3vDQea%AqRh? zK^+yE`-BesSxcla^SfF=7KpfA%?Ywl!&WNGyRePm`ABl2t zH}3ya4x|*>H2R0;ezv*I9(!Y7Qi8MbEIus5?DQzr?(j&6&jJ475gvqRIqDm=3At0}t=%;cCVx6{ z^scU|zVbS78#vvv!UJ1OWhdU;<0{pTU*>;!78mtnUHTB$WnX?XHT&FFp+yWH!8_3n z?X=TX%c2;>ldk@wHLEDIe3YysLDyLbIr^>1E^huR4r35K&$x{)o6qXZamlr5jHpgq z{@ufR_aNKyDxVVI0;~HJtRzHRLnkE*@IA_;mwnh+2zYAc(VPZqlg7@Z`2 zAsLh9S&%?g~Gm--QvNUsL!=sBZBEv1`y^p+u<6k5b z95&N*a6;_qqhWFz7jNzkFGyWxBf*H}Has>0T4kH+>*UuKczA!vO*}*k?l{D1UyF*Q z-skH?QWn|!it9i_oZ@#VZn3jcCQ&w%@x^*~2^G1Xv+W|&tGWXBoC_Z^n(LZ^i7FWa zvR*T*5=DiR$!1XO!q)AW%Jt>AldHVF@ZL(h@iE_cI&RU#rzK)80LJu`w%9HdSvg&+a+! z`yYtn%|Fm(0`-Va)#p4g>`|eEq>BU zB&_f9JcuOo;1|C2%f&Ui^A7F0G0?<}CTc*}!-0dawxW1}Rs~g0%_B?gpMOiwtvZPG z(o9docqs_hftL>3y$fEZIdUsE7g@fPax^t2kA4wFrsNwwUL>P~9r#IP(#Ce%8zWq{{d9}-@|WS;ahJ?v!~&m?7(CsPQXP)q4! zdf#xP|D0wu_detJvi}bD#PdD+qw%z%Ivup#EJS1mXv}KHWh3M&&BHCQGGT|DB*@=$ zg!$9&sA}IP+4dJe_qb9wedTjl97=L*{Zb8TmpSV8Dq6fwU6iK8Vg#n#7dW|(vLkz^ zx(E%FX1N~ibH*qQocdMn1#mB4=IeJ@pcF#~OO5@c{kL~48zUz5J*>3T=HIz4^ zKP3iY3B{7uC(%xI9?o^v6T&M#`}&~l7}B_wTGKB+MpZGF&F{#%V}D=N_%f=r^Pt(G zQ{-9QddlZJjkE7c>iaUbywx{q-#fERQ}SCF`!RI4PiOx)R==jZ$@K_z%=tJI9`mb! zr;0pne&T%3l&CA>4ArWHqyJMq88flv8?}#I`L8f~4yCz@ULo4k)^1$nc$Sl|+!-By zwjhHuZJ|ELjZO%FxXRY!P%-4`B8okp?g>TdiZY$+50p33y>|ZoLR~Z{TziOt2=!~@ zABYS!z(st<@OG=d);3#bz%PYMn=dlxOKiYO+O_Ow?O46HL))c{yd?r|Mdt=&=ZYVi zi~Vp^e#`DxMm`%47N|SezxKDB0p0+Y=D3uZ9qZ z!1nWd`@&#kTl{6@B7?!t9;5xso07SkjjmgdPGt@GP}Q@%9|Eib1qiLC5895jLtpYd z=Ck|Rs?(A$_Qw2#Po2Gv{b{Wx7MtYImIfp8qU!6?lA~YJv35blqCAi8n9d?5jo>+? z9xhZ(o{LNR^p&QZPxyLeKH|eTQt!g9&>S4ff)liacyWZDPh|h&HnY+nw2tzv(=nI_ ztKbXE3;B6{t@f5#Zt-DU8m(g0%sb=~;8>oh$;z4#+$&p*vWYRPj1640(AALz=Wee) zJrqeZRx|(y7dN9D1SrAGZN~s@T^cUo3|acjdRu;EB<7ptE^BFSO%a@}<>=SY;0;KVv$JO{uEdO*VcG^=~lwH%Mnc!18(k0 zsm=5npRJJ6;*C7H;-TOPa16D!#iwT%CZ`+*Qx!e!DB2fH<3bSj!SAZWAO0b6T?0VJ zx_M<=&P16OEZAo9E52~Se(Iyxw`LM4Bss>KUUnG?v2!LL(9thg4=@MZc$osCL7}EH zcEslkTzSJg@P8mNOUP@6U#$1o*qGDeamP%fs*e#4LRMR}^6+c9f%0p0X@ek*sl(IC zf1tb%kR^HeIWYFaC30(DHchzYBgShL90@!4*5C~?)VHMYjKZz(+E+(ZuA2Rqv_B;5 zxWAU&oz^qQ?^ZewqK=UdDib&QeoOk$>h&$M#?b2AGKLrVVU6ZfBn3$qyaF6=>;!<+ z4-nvH28cCnkbG}j<31JGs>W|Uhu;fM5$CMqI)iXNUUH^GeHda{I(eRfDNzi)=N>Cw zRuXX6kMex)aj0UZ8YxWtlNA9@Q0uyl$u%ZdM=1JBfe z39)$Y>D?93UyJm8P2;bk%4MEvU8u8z2}usp%7aWomnZdsB77qroe+Qfk%m{Ll zMq?Z3*7C5w7GGqlTki)?4BlYyCa;4b2TGKU zbvcD60zrQY` zJ7Yojntkv$UvbVy5l4>RJKi-gg}$%SBxcgBM7%a-J&kn#d|t(-AY0NpAMVX%QQLG5 zPvS`WK4hZBZm1F^xYe@L?XGv6RcyVN(?J^ zhJqR@6IgznHQ+Ha=5J)s!)WN07Rw@(Zq9xsLw8({tL}L z^bZK^D8gA-C9FjGb8BeaG63RS001lWd|?XX7)C3a%>1$7fX2=7u69aY>J7H>9o{Xj zx#2lS!xFpAVEDs7+qIDHOOTMk(Yiw0p@Fj+WZmiQpnHqm!%CF~&YhayR5^~2NEQxu z(*h7*WYW2`(?1aLB_or=`q4+}hSs*lzWK*n8T+2A{I2cjA~;=GRl2Ra5!sy&p|vC*1Xhy6H9OBjq@c1*Wh^G}@d2cuj*yHAy1ThCTTtb8qh$^S|g z=R-%B5sF5L9+1Tt_KaiaAU(Gibl%_}b9UEwAberOr6JBn_Kz zNMQ7MONv$_GNM*5+slu_R{eD4mn%_CPx%bzEXI(N{O1&OQt`ba7;QG9at$g@;(9-* zD#e^!#41(Oj_&J18K|(!W`M%(a&v?=e5e%#^)<2k5^Y|)cR1Sg#Vg9^SUm`RwTJYm^$xD~Nc25hTo~Ys?i|?dn%4D% z1pA_OPv=_GoM&$z4>f8|ri>uF@wOnB2pk+XiQ=Y;v9QZsi)qFjO*a5vh~M-b5e;^{ z5BtDF70=403!OGCzIVEnH_y}s<{I2e=l0s#m_0pjpwqfK$! zut^D~eJ!fc9xaBiQm{Jf!V%C_+|+Rt^e7=__mOvGO!1z`QF_bx@mh00vO{nXNLKTU z!~yZXqil|k=T~!)#L2k4{*BjE%`{ux@6XV)S6e7L^4o`GWeJwA7B6wPjoN1(k0g0n z$1qu1VVJj|x6=plH0I6S{S3yx&viwfVkRyjhOJjI0xiR3x0{OqWG2H0q1bQBXQ(+; z8!GIQw}GXVMSpPucU^pWBz5i4Z2vFo?T%bxBdX4Y*Z4VU*B(fXOX^##`(RWAm5e#k7estkBW3Qm$fgSqf0>5VzD-V3 zkkND^{TBbIWO!~!Y5<1ue!CBuH{`#1%aBkqs88$j(UjWxwLya^3i%%$RjMYrJzd6j z3%q6}zm1}bx{%9kr`s88=;DVh-?E5g+#xzE*yu=#iX%heQ*5JpKj4PjK~r{oatCod z`>}xaU1^77-?sr9d+tGIYfxFd7@$RaHoHL_zaa;l*f|G-n?|O=xLfk_1R^9$!5sFhw?m8Oz2bgId6&kHa%=UwYQlORVtQLyq$BK7+0J4MSE|CRP@vXzM|L<(_ z|N2QYl%F#f03_h-r!!ZW{jR6V@jH zDhK5)t00%O9nB$`WfdB_*OcpQFGBFl>b)Xyl1asr{|ZUi+&80j}(bZ9@<_Oi>BC947qb4L+R{s zNqMH5?kOcgDF$p1C4(Xz&bb=TIm+mh{RnqrI0I$^0uY*++kaYhkE<%EE|JpEFBTFTK=*q{#jgn#f`QjTnxGtr8#@f zNHJ9S@_7U~d*p*}-(WemyOS1+h>Dw%$d2Q*b|_E${$pF2D)mXpPuUG0pPh90Q%0X} zbCkRqP7?i7OqzGRaJ=z_3eJ(*ti{;~C31ouGHn|O1{{wyfeZn}M#dtiM zp(PWX69HBV>#IxP;Zxz}-By0F#E5>-z3NVd{Y~#`n!?-^=UA;`()FI#LRkdCVP2o8 znD9ZaU|X5rK3WEWqYGn7Rdzi84E=iGVnaP#n$|ioJD!b8$p_F~?>@99>C*|g8nR5~ zR+Q`OKb!aS2Sfn1;_hU8=Nl7Dj~Z5gQ`VQh*MAuMwVC+~fvkw#pP(UkClIsnLBlyC zZmGVhia*RH*!2l0K9Y+MsLN3`qk?%GMzJRdFE8rR76g)TrGmr6^dP#j~46)MgpfB)I-L(6O4uT3p*H?8|_$f=OQ&i$Vb zDx0{<0`A}rx7W>5{xdW#c=}&2(q6q33G9jkAD7BqgR~Qy7Unw|wdIV%u^N78s*O2& zmZaERAKfNZrY-4P;9=4+XKk-3G1w=D#%CfU22$;fIe$nO`z|;+Do04FKguR2%s(+( zf*Z=Ti@ut;6tz0G%SlwU0(A8Bt!6gumG;yI1H#nw z{2H^phV-YQ-H!=6u0{zBjC8y-sFrE(1wW+iNYiG1d$!vsgjEh2V0(V3-X`fQIPGf$ zwRFS%b;dMv1dfHwbK4Pxp)08^11Ut^VOOSY&z;irdHb_Me-$WH{?RUkx|N_(YmH;z zB)ICan!s$2Icj@45mxk|7z;O?A=Z9SZOV0#P}qeEAfNcQvfya($pve8jb>&uW4DNW zv!XdWXY{;Md;%dlQ{qJ9rwo?b{cJl6ok^?TS=o;ohhGfLbttzruWUcTrSEl<-!(1H z`&OE^2|BsMaHg%r18bDeczT~&JIbz=5LN9XBA?)4F4YOG2>* z!}xt2&Ug;H&ep92?v36@9<5IOex6`f>8c%(^OMv(Om1Q5=Mn`VYl0868`W&lq;2oV&jQ_GnsA}XT#6o-(N!N#p9O=^ddx6=8l zRwk*U+}7=Qx>fZlbVpL$C^`aa-G8d#TlIIef8i6+R!G*bv=sdw-4Z$T_R!osveR-h zPmHT%Z0RXjZUORJ<~hk~PQrGjs2i(tn*+aS21Fi*_mGb5k^&X94hw6m0j3TkMBch= zXIg+EpMj9l=~B;_qJD-0eX^=`WtZ`5GJ)!1-5urtaetGy6j%R1hl8s|3vHc{r^Q>S zgAGM`Xs7dn3ZV|u*@*8pfm&cmHPgd)b2rExY`WPuyuRnvUykacs>|;Rj}^!6DNhd> z9Fhv_gI2S%+g00IW6ChBlV&y^ArB5cIf#tw>vk41KSYj;7b;YaY(QRLSt0N3fl z$@1GUt5Qtzq1E~BZl3qv*tQ^BRM6>yT-Na|$o&S4!Jpg!{{mA9I52q5_84+BO+LOQ%O2k<^CNue#MsI?Ww*>=07sSGz9G z3(93rm#Ac!kP5S<9^*L#Z2R?Oj^+97iT`DuwnLRFS+k z=IwGhFyi+WL`|ceKl@KMl5{-w=(+Z;xsPiwOT3Crm@NGgHo(Rhcc<+1(1*e#)VV)& zpsxS=v^pnJ&4!z#wu6pqdMfJv(Gw~=#^+~YAyhk+JIVHI=ooZ1t`(SSwE`44ik6jNGuA)S)HeHKK&la4 z_A}a0!%%^e+}T~QW<1wPnJH3To-@bvRn}LeOPzib_a}6tDdc+MHA4-{{E5~JCmYkL z5|}(!9|^#7J+0noof*xX-Dx}0K>PcOqbP-bO3+%V8rc{<;k28eGSPYHt`)Piz;vqo z=A5)ejahb{MsVYtzPTI#L<8-8bx~1gF>AA7cT#7xMh(+fqV!H&cE<@O!4u%hUNl}X z>1TVUwW*mR3gu~}q6@^BnZybSky&d9bOsz*dtHnVO508tzreaR!|t?E_h)$mo>*y}BLC%JU$%Uygt16Me9y$qv zGE}#H2UFS!0GX+j(+r3iWi498qFv6`*>fpZffrwyq$5tNN=6CN0cF4rq!gYME4^TQ z$+JHicWoGY$gFdE|A!~vz{ZxQw4G}z0B3tG+X1>}^p(^oBvs%(3ph_z5J?+=ivxyq zn0eZ%_bl+57ymk^N+GVYr0MhGQl>Juc@iO!DoJD4^R;B}vcnd%ny(v56fL#rKVVd2 zaHsdJ-d&&G!~=FuWAUwY&B--C&8oJ^ki1W1OX_2nJC-V^H5y|iO%ycAn z9V#{cRCo6G#bREk`bg)~x&UALGgIlaHkbp?@y2wse72!f!J@Qj%P}Lu$Vq*VQ;n%O z=z$Ra$Shq6{7Cdnf3@y#(63njEJhmWh!?Z=%PINu4Dm;=9ALP`w96nDzt+aF^r$;_v9B_b0tv`4Q#PWI>4!Flh#>Ys>jz0&{H2xW7s`oq^Ivp zH+X)z`}5f;j0~*3q4hcQlL$L+hEvYW5!zp{!(tu%)%iQha$V7T{uI8h9?cKvX?s@V z&+Goqc+ox&hHIvwyyodr4o*<+jYH?jGP(}lkd{0^NR_j$zy`es7#~%Jvw$yh-I@~cTMD8$T6ZT^3^WswABD;xKv+e z?QTk=mCe}K?yKEEC7RAO&x8ZVkN;EU7Vbg@{Ve`#hJ((!J6wm#*#U+#3JM~P9>F#0 zo0yRI1eIVJjljIQZ}Ki2QiLMh*K2B!=EL`y7^ZLUNb3H+o7HP7-KsQt`3Q60{dd*h zCIDTYtN-Cku&Kr3V!XqNDE-jNPo~M^mpX>CvQiCSHAYg}+MHfFs%($Qq80blRj~lg zJ?_W~O-c1a8#zj3L385R?JpBd3v5;e^o}GA2HA2t#hN_1>&70_0%D!TFGVe`}dfqojeWo^|q&j z$?alYhk}5mOT*>mh4T$qCjTuJENP04yANm6umE3C?jnhK?(88gcc6@S zIFb+dlt)|439kOg?Mu04h1*(4SMNpKPpHwv>+W^7wLOIzZL1yzpR*+RY#bX&fG?|3 z<91ms%X#Y^uY9|zH%I>%)XjO(T-gKqSPa|p^dG3JKkrpPPhNL?RsKJaF85namXx34 zvh*WZubR=Tqu(52w@^{*hoi;&^U)-)eaCuOwBgd$xFD=^cmQv7)~>>B>x*8s4&xcA zfY=Rs8+pHme;}Zm+Ye(I^vAf+#HM+YyckiMp+jr1_%3Sd``p;=8tx2I0GCakp^=W)FrjX-}>e=r;Dk8U2V?3JNdq z5|6m-;J4g=1MxzO|6(nySat49l^57*a~qHn2rVv#oygCu+gjjr;~3&=6SscPau)xw zF*eIvWQF=S#t@NpVO1 zzWZlhv@2tk@hj~4dM)JRx}_pLolr{8CJ3YOxVo0j?%4^IFXyR$O_rf`ErPi;rbvtn zDHBO`G@9JTXPik(FHiN=lE6m`+U`Iu(Xcw6W%v}igx`}Kw&K&j)5rA16hsBgo+hoo z18pDM55<6!@J(QJ{p0cZFGAiTHzrzX4Ez_`+o-t(d{}1| z&=iTtO%x80b71z>>V$jzTGiO+YxTnh_WK9a3@1{Su3$YB7}mquMhPEU$uAY3st8mS zzz+{gvRf(7EyoxHPfcwaA79@wI``+sS~p^mZ}_Q`bE>x zHBYPu#gOwyE|X~TcpiRz!WtDGYq1XWSQlGWN@uf2NMYSCG)yQOI)GW5(jc9XUZTY@ zQd23$`@e8FW1LPp@UokEyP-Zb^uDk#JX(Gg#Ib$=!&RZ*s|`}0$O&?PwsC|UNb(`e zxrU|dp;ZH9@cP6|${}k{PYX785m3wn0Cnn~?K@K;`UkQ_lOsOIpD!<~R9sR&^SDnr z;%w#c2Rp^DiQ|m)&P-sqq_1QmhwWa*`#L<3Y4RwR(EC>BOwz1#mu}Id5JqKO_w#w3 zblBVWPyb2EfzT%`_1W>&^75|n2v!dL+kMZu#Pbrh5tZ8;B0m%%*>O~#-0bw+k=o5{ z;ogjVo=%q~^=Mpk-Syw|VN`PB`W?SHvP80s&i{CHOT{Y%iu?pYonDr`FP+PZc1YJO zA(Ldta{Ibu@gYIH(>D^b3gNlG(zL;+k$V-0q~M%6iOwpL>9Wng6ULq*m>?eNReV2_ zL0vn;G`iF*$qux#QIXc))smtnIb7)(4TBu|9rL}ND?cpNuWdN=&3w8Ad`H8ktPSDN zLADV(Xw!2#G!FQbeZq17XLuvUZsDMFs#RTr-m)oh=;YAqY@l2Il4vq%Cic#}Aqcd! z;s!l^F8cA)rMX05*CUns9u;X2C*^HU9LU(`2?qb;{5t@}eD~TvoF6l7x3I5gQJ6dO z4!iuOq?8=zx!a8jk@)P(@_n}SkTtP}CF1vhj9+ykRNt&f20rq_svC2@2^2mmJmn;Y<3FYeMAW zJ50km_&Vm~i=%|yJQGpa0ZZ!4lOi`Jr=Kcu8GTqk!LF7C?R$F8y$ZWYH5vVWY_?hs zBzk@aIJU1YVGL@w-TrC-NrM0^uC{jSgBXb~7aQR7nYm|o>*%iCrUN16%&Fh|>{Ry8 z>($3Z>gnj*aK|Fyb5qj^l7{$a7hUm`sq{5x?(u)GNJu_b73D2Isp4LLEt2)!Y5twf zbz_N_wH?%2Jb2SY-{&uaTJ_S*4Kd&}7Zi5oEHA<`U>Pe-ZY?i_SHGk*NA0gAcF_%m`u4ggUA2@KVE~+%CTKoe?Mi(>e){Oo#5MoyHuhg6(c>1nOHRB zOPHGEt$}e;J8j9&(ZBSY( zM|G48j4{W9Nwz$;t`4b^0PT@%IhNULTbrLANUOtGTPI1UnhB?2?JUgi%x4I2WY^nQ z80dYd@xMLbB0b~^21|XKK%Set80e8#P0xlcAJlH&3y93ZN}R!$SthqU;tv|H7mJH#ax4CsO_Pe?9k^U_bk#bP4qS52>7$)91?QRV%BL);3#tmR5@w>JQ@pKWDl za~$|Mlfv&FJW5cxzoU4ZlallO0b+nWka;&MUoB?pZ1GyaqSDPsO8TLe2<(@BlwbanYNMV+w z)K}sZS;N253(MUn>2I!l$wq~|(8dvl9%TyEao~B9YZOClW0xV_FQ++4-#8A4+UFbnS8xt|DkiSk!!{c8@!WSzq(#1q&ZpcoB$! z2W{1adp+zHv8saWnb{+t-fGt~c9Atzl0)c-eMu-L#z&m=aT6)98LKdZ*pW*)5fkzf zj1miVxldzI3Z2n+$6*{$-H9-l#%bk%I)9Nx3Oth=!U1CMjCVu8$jwzW6?3%a0gscZMVttqe8 zY;$$by)o~iJE>tAYr7w94b^sUb%}oluT8>S-VGw93UU_?sBMN5U35P<(|p`!F<*Q{ zIUurHMEpB4ej^?4Kio0(-bAlyLHD|$cvs9I(fJ_h9rgl6tfOo`L=!j59Cge>oLTj0 z&n~AL5EiyCw<{rb~J%= z^|>#mngCk-W|H%(V)v4x64=b^3((m(cl33c(kTHfON;jB+NOht?G`}hR2P?vPjmPg-i^WG#`kAmpV7zs9)1J!=t)a z9g^_wW|zgMS5Cy~nh6CyaWHn`Mw7_4w0W()6fQkcIOFV)t26W^#Stk1rK;jnwZ&I5$Sh%akK+#S``YlE%gdn`S9Snp0f8AmC34m1?tn)Qs9+zWe!#R2$D zXI%G;?h$+tg&Xzlz{3?+OURrh7Sk_7ye%wej({icg-c%Eu zH|SKQAONM-B4QU~z|qPNRMf#+aC_Fw|EDGH|KIx}UH2Gw7kh!Z(v*P@=w%*2+>E8D zbMnBy0lQ*t*J}i-Vs~ThmEU?0Ck@P^p8^VX3)0EL=I$O`8+7MTS01PyKJEKVs6TS=)(k85!R;Sz=+N%?JEru%TP(J z9(R87uy$s+$Wrn5tU~gkytb4rmrOrH1A(lp4uNxRjRdL1D9M4Ut#gqyrQF~_iXR`8(FgWqh_DN6;=E0Ny-l6R)o9DEi3YPR3oqJS2HuEDU~t0 z8`3%=p4u!T-Pieg@byCPM%LY&6GrnQ6zw%wlbCNsE@BVy+?q7W+<56xA%rhJ3%A^= z0X^sC_U8`6B(gn0Wdl5rvUC{9hl`*Y) z@d(xD97~9Wi@M_tT^W*Nfyf0PEtQ*}N4QE4xd@y5CdlkQC-yhQ%%bOdlQNF;v4hsR z-l6zq`|p^}v@SIJfF#+Bz+G!1_*zXtHJf$!MtZ!RbIy(-;~I3u<4tn}YA+Z6$rsnp zsAX)va#Y@aOYM&=d{e^a93vIeGxmumGDp+HmrK%-8xQW>l*jXKSqG%+Jq7efXn^?5X7XYO!>Uvohd6oG|tUw%__7BGDMnh7~?VOR?1EO3)+ShcD zaeW><(7JM0fguE_q;20-ykk}WVg0AyYxTPa<5G;#d}o6Fn*opq$&#(8mWG*dUaRaE zwEA$DgCM&*Q>uAU(^+TjAk~KC=~?#75RM&F-+A7#TptP{4B6dCWaty5UV3zHch+9H z#c0er*-cu@MP%>yz7?eC^WMdo*>Ska&g)xhRVCfL(BquQadC$J0X@r)UByj&iuvgK ztO?7sLQhc^%h|r2?s-d(_?h6>U)kBGkR?xql<;Z)3g$97AB<+cqO)@CaB-w$p0SN9 zzD=K&v?X*Y$Y9_RrG3FjJhbUTHd5oS9k7%a$Ue%R?NE%c%-Yh?#AvSdW)}-=G=M`d z_JcXAb*o4FX8727yF9EcsGFp$WS9b_gLz-VUaQ5c)keoLW0^p~9IC#=Z-?{pb@sHq zZX>3>8l5=apZ$#t&1&TC$Um}wdugu?#2NDqlOEdNt#V1zH^xde%^r`SzZ)z^?;A7b z=(v2$RvSm|gi>+XRiGC7iMod;qUe5Llm5eU;U@r)aFv7<=2`0kn5MNW902=W?ad9x8mL8qQf~stPiOqVoInz_`q+d_c42+9UKQFlW4d7lZ z>F$kt$-*4m9UQ1N(T#m~?7!-7b{Pw~^IZT7%%7!#T*fem! zM#MDaqba-(5h!@}WA%RFUE%b+Pnl&AdrtNAX^+#i=j%pa8J2`6On0huBf(>UTO)-Z;bZcfRV*0O8klCvDlhCS~@jiV38sd$F}g*!hul`m)$5!Mv* ztPO=zMBlmcAS|b~Jaj^D()d+zSs90kYzQ*922q`SKSWnM%%n9=OU6~4b&X%%?M@zR z_5D<%TcLEHb?=WwN#$cr`%TBEk-u!I<(mvWzQTX^xxq-3m3xi9VgAZ$=@jkZ?r^q) zL^C$N1uAx|&c|COOAjpc-!R#E@tt%p4V}52cbN>rV2KD~$fhm#wsGxR2X>o$D!n*k zw>BzcO@YWV{q0l|b706ffgGpLNA!}ZX6{mp;Su?6eI=_{l(g8I7{*axEs|b)s-E-| zHXb^Ag2M>nDYt2o!j-Y3q?e56n{=;)OMb2AgyffubL&Wf&C8gaOtqZFh#rpyHm|r& zRh=MEu#?talJM3SUf)j%P+uoYTAuDEx>DAK>U};w{5nLnQOj07vdtx$jhm$!=JLXB zAa4$8xa4@Sia-Xe8w6xfUF0@h|6FJMZsaA+e6Uy-okbl&)X4DZSnau5()yRfhgg4W z;l3Dr%zSI5M)2hzr(d#q+6E`_{!yM&1i^cZmZ`4>!ZXZbElqI^MGmjvAT=KQhxH9U z2i=g$I`vaR|A9akC2|fDpDlYQ^xy?rw2Zl0quy)b)^l}}azS2wjB0rwTlMYlnbRMp z4U?mczN^<8-%1n2Af)IBuQ#VDT_U~Vmz<=S(T1Ze{(gZ5vl!#5yYGVyT3xL+()9$s zA?0G4!g{mHZ+tqE!^~F@be8~&BrN0cp2p}w1%Pg}*5WjeWPO-`QWSAffnXzMHUA8!9OtiIc z7Vz~P`LR;jixgfvp6_m9xz`yjz7%Kd>ebZK(Jr5~W~wnRnjO;1M4YQ{7&YEVe0)jh zRsZhEn-1L*O95BpZK%9hrQ8Lk8tf$w6yqJdR8E6Jy;RmgboZYpE4# zA!=40NYWB2Q)Zbl`o4EJ)X7X^`HTCQpXm~5Or@$@xgBFU52Ezx0Z>lRJ1Z~yYrj*_ z#-KuRPMzF)&xiHNOW*1yO`|@hn{ZSXlb?1eF-9cfd>x*ecmIbK){4^vKEXjl#jjpD$+x>U&R%RcBj8J3N4Wgu*%PS4cHqj@vfO1xg;ywX%C>?hc_D|b zDgU4id|Dy=AJ${Y3%8<9$m>&$P%*MKq_H+!vS}`VWl!BzFl=){IL!L2XPhXbGw{aK zs8s;A3U56lyar0fdKVz{gWFbpF`GPnOAO&mb(#oNVE;X~B~YyV4= zC|n=FSGHZS^;=mO5T_oBd6RUf;oLpBtanPN09jWyo=X-kJ%McuTlgZ+UmP0?Z~Q5f zFM*IzUb0bO$map2nvnY+@2^%`X&er5JrGE;JLY@u69puoLLm~qV`CEu zKwoz1>+c21x@G&WYkC!BRc>WPdU{63?1P4gcg*jK>oXp~OiAViH}H@zjPE2dQ&H{N zrC|dtF!7eX-Y7k+^%p=EMvv}5RXvN4%#1+xAm%GB|FE}LDbXEf-DNmGIeKV*b zB5o?}=@i$}Yb(gv;!A=?^e1#}&(Qm^j%aQ8MgQ7LoveVsH``^0=nP48iWmE-LOT?9 z_1ZmW4+Dzk)3AZ;vrFc_aYfOZJY7sZ57(G574~M6XUNf2Xn$Bz7+LnW zM^8la#_NE)Bp^pBfnq%c_ATX8>44JN!5LKSUUH2y5?U#ZR4TsrzBXMWC|43Bj;TwkV_Uyy+0|gtI)&x)0K5#NGXskce+g4>Nz=s zr1Mf?Nt&`^kJT59y3V8t$$OtO;PLRa@)`r(XriH=KDSP+2C*sf)5lj%5cree*gx_$ zPH{JCGv91lq-Q}jf*mCO^JVQLp%Br@d$P5I*5`Tt&M7(5EaSzSljNRy91?b{jpjpt z)}Q^3K$yCea{n}72G#{5Y%|(z2GjHLAJ#Z)(S^zeJcvJo(u?f$AC`ZUupO#dN9Uxa zB2QE2_*2tDQ4y74p!iw5|_+9bVFX^G|uTgG$q5El2RFVuk+fWvC@iRLL`lf~Op8q=jGze9Fdi6u> z&3eH-okPL$!N@w1@`UR=uD?iBjCtnlSUr#KV+kdO2N0Ah8DzxR`Sd%A23>N`c~X1V zBbd&1QWl&$k+xRv{y^5SP`CM4+`D7WxudV~Os3|#6tg_<>p$NTYybkuyt{Yz0_fk{ z=p2~IW#sLFMzT(twCs`%O{aLrPZw%%Vx(x8XTnf8_Br|cPqbh{1Aka$2J+2mA}VkK zYHl~*{&H;fboDWZ*zRbm0h7^98L;{y zi?tiA5*Fw+){cq(^Pn%6M!s3MBL&vS(I4P>o*ZPZKW^#7?W)k#(p?NeV%OD%t}f_( z+8Pposc=h|bzeu(8cy z#bO)~tq~mHJ`nZBr(uDb@`hz3n7o05Yo!PMbVrb`C*Tc|5U4fi(Y@hGV50f$qrh8i z@At>52K6Joh%MB3W5nFTz~ zYBsD2-d^_82XsPr+;L1oM82a|*NkY6(p%PbADi#Q3MQ*hmee&l`|+(ARQv64;Y4Fi zlM9l*%1$u1+_Ok1UqMJy^jdwBEJ2hBr5sVjUO z_n;2$=L0&$^TiOl;jA5pvbS^>y4guo)=t_q^=+M%kw49a@{qeN812Lx<=MBFefU~& z{7Ywm+5V6iTi21+$+Xw(p{K_5rdIqH1lb1)NvlU`t^DWO^yJ@u1PTOv5tqv@!5BD< z-3y=MyLEQB&@&?97FHVEHEfH|Dxh^ZVt!WxH^ANf0FAx-b*k%D%v@+~C zzaB`eV=rBhowBqW(CoF)oXQuiS-lzlldV56uGRlcOy((u%;xttgz{=uVAH6jqhj)q zpN#z*Pe0NHe zK+i?$*`3lH$?EiCjs25fcjo02HvwkP-QOhsEb8b>JBR_&ci&mQ=+ZW39%F(=N|hh- zTokDe-KHs~&(XP$tlY2BhtgKGPK1yH65#JpkE32fA_nt6>;P?(#W;k}(LM#cp5!u{ziK%mI{22dvqCz^Y!-D3pH{pRaydqNpo}a?@693|>=pHWPabFK8nT zu@6+J8Yp?Vat=g1bqA3{c!e=9h7kRIA` zo!hWrHoUj>`Suc4J=b=NzlDrZqKer-I~AKG(g`A%NKEgtX7Q(IcFyw<6BI|`x^kHP z|FKJQy?>BD`kzV)*E2AVq1z7AVD?P1$H(j#E(zjBk+FAlqv{TA{$Xt_e38I+9V*Up zfb7>%U7BSh;=fv@>GfPx8oYk^f9v>=Uur}C1Slos;dk^AR%wQEs)dMVW88ylP_ft9nAc;5^6bMBgvY_G*%5T3(ja>j9uzTwB0`X6M$H%#8&BgJQy=BBIj@-*y z;rGUKFv0uoX>Hd$IgE1RY9k0ZO4ba>1_9jq#ma!A!JRdX++s|U>;!Kr;QyE(o4a|e zcsW{@3OBTc&Ewt$VIDcIyl;t*V3TtP;DfX@zOK>tTxGYN$R5)F;Dc6zQUl#KNFSLz zhQ}`du<&ThL5HkNE`2!7Hge9q8OFpGn3eoN7vWIah4#H4FgGB=eNB1GD!z9~t0etU zhVX+WLx9pQfG(v45{51biwgG3+MuJ;1XyN1%NgB)U=h1{1l{u$q=sF79eR=GkKZUl zM%Np%deP~^PhaGKT6(9$d7Hvm-%Ra7OLF}n6|L#2J=2&>NAg*<_MKOa=2zfm^dci3 z8)NOwW0i^s>I*PtZ?5OqDH5fv0u^l6WHiz+Fc#H|lPYOa<4Qd2!L6Tu5XcS7)GFAW z;Km-Aa3Q_LwVh1lWR(nEq4yeM2oo0+^!ktI_SIs7$-pwSX9fCgd{n9)^X8Y286-z_ z15&&kpUtP+C0nl3!M>(hsTo=9QAMu>uNO;B4h8dc6fO2My!?b^kz+{v*@MFN7cec# z`Hg=28j{TO2kISIVc?b-=i{y&75Bt1#9Mr(6g7-&`)nqk@>N)HZ_h)3zobQd=_cX(+jz> zdE)ytd|@TQ1#@08D7fxkQ2w~ROyTX{BGc;zw+5PS;5LY}T`gSUrn$~F#WgYixi{>d zZoG+k!vIIyeFk^iO3pyOwFf) z+kYHpwpcBtWxQy!`Bw7}kW#AKK#;+qK|@f1c+NQJj(@#d>nh7J%UV2LLW_%L=rFr3 z%BK~eWAG+U^3jPZ8iVuVg@Husm{-{~%I^9pfA8|HNKT{{1=1eA9&GeZeB&56G+EGN z`o8DlMZqu^XFTyN)m-6XZl{o`MSFmVoP;*Pa{qSxH)V9=OjbaCIY2!wR{TgrPsmT7%uJInXy?(@B9eJ zJ~rcfW?$D($yjs47AEUwp*RMHa9lM?ERuKN;nhVml+>xZh~lUXrwm}!6? zyadRAz?fvexV)`bV_U>kno2q;gydnV8~_wn1MA8AD^NofO>=lLmmlTZb->+f9+}$Pbr=E6DcbCUeE`v zs$C7>t|0JB0BA}}r+65Bq2&&QRu71-)vc#T7j4cpnBCPu;5V1*ly7~Kint8+6EtZ8 z4jHdaIsm6(jz`ldLhMV+F?miYX|N6%WNhox%ch7DQ`-mqKWNasAn^Y%fy@x>m+ZXi zD&Jnx%zB|F@(JG^oTXEGmP#sRbRsGK=KS4)->h-yLo+j)G72LHKjh4k-o;snsJXLv zNrcr0XPDx5aExf$(`LTMZl8gg$AWv#_F-SHNec$Q^Ypatul%WGdG(0JsjSV_c zcVm}Yc!Dn3=;Pe6`O4BQIdzmwDjp)p>De19^_?p?+))5-3K(EFENy6O zmy{IDiH{s*E!-2p(|Yg1CTfvc&4%5i_B~Nu0-3C8IOVk1+H!M_nG6l#0UXv9=rsFL zK!%;5aM$OPLh@ETs>DiS{Ska?5;@O#Yej4dKgF^$xZC`Bpvs!BVxC88D`T24_H z7`H(n#vVl9@$n^ws<*~eE^A+Xaee?{4)xWQ<`7SlnmEKSo35H4=M+RfBloqt*?TtI zOUD~Y>B+@7U)EVDpccSbJ zl){qT^%H(e#H&fCG&Q*tq?zHl&Tyk98~_4$E}E#xG>H|QTU6DwqIqG<-8avvynV}Y z#$*5c>oeHyZ7S?&PFHIJJu<5O1s1Vcm4eOB3w4{GAwV|1en)A2K^KySk8tt=(UO+N`qH72}S@8os z<@-zVzV5^>ob&61os&+%%W%C<6@FC4af`iF5uG@@0-<-pO6gY7?Gq6Ph8bX4S9t>x z3=X)AX(Uzc)sLagT%>$u!(kpB=F+b2)+lrv*<`#%)APilWUorlkZzF;#%#G8A3w?S zR5jdJ#CX1irq%Pc{4(shOkZP{y3cfUIxTF* zY;ettnGUfeEt)Y!lhX?_%Q_HQXTibMG@v6SiG5JHWJw{^ z7s@9b$dBj8D71(tQBIC4KT+}PXHIAS0fOS0l=iY!ff!PLO+lbN&fO)NKHaj5Ooo<) zb1Dv`QdLzmfi$YD3^DX2dmP-1Mfw-2P(5C}QCF8-z9M1HG6NH(pQ(f~GJs}q z>sRE1d@2?!jVI6bEnUNk_YW#1N9Nca@#nJ$O*Z^^iK!Y`Z(c-n$K{wj(|CMwlb0@v zG}|gG&D!D-kRW*Gx7i_N@NP)!wC7O0gj54;wx{`jWDDTHYrl;MXq!G=qDDjKqTmsd z{q8R}EwRYkOXFD*W$gV+cB$S^xlbX_q!YHwVgaN0UjzaS_a3c}3 zDEp|==^=ZgE)e5AM`hoRe<7Z(GVG(e<#Rk~zpNzHm<|QyQYTbm&i8P)0n4m~51qrj z_;L02bp{&>lA8_vH;g6Mf~!ELna3^!!Z~z1UH0qcIo@AF9+K9`(BURloGmy$&^R## zH231Vd3M>MQWjuuPc$MN!j&XP zKYhAf5N0Tc(lC2M&jT^lYH*F`XQ@wgY8&*6-Q{394BZx`pMUisIOnz?9QD{Lt$MQf zn8}U7sHziFyR2rO7lyu0#WU#g2Jba&IV<2>_;9osAa&ewYic6mnImc!nYvc}lf`7{ zS5TUsGlQ!AK+*LFauWqvA?V@BjdO@u(2r>LxCv$=+_j>uZh0IAb2gAe-bUi{j`Q^t0E zcWmT_f!)0+M11!RWeEpod|>FExM8D6!Y{rCo6{a!8=66vUI~WP?5uf7L!`#Y7pF3s zQ+SA%!^ukLm3CGyMd&Mut%au%xF^4^!(~a|8vpt}SZ(wiYmLY#(YR1fE4LaFGy!3- zN;Z3S%A7R$mDamTL9Yt?fVn{IE-5K?o?Gu;gP!CRl{8jRGgTr%v*AoQ2DRyH6O$J; z0h3tX9CSdK5vQ&}#h1J6JJoley--)IV}pc#K@sskc0FjnhCl1JRLEVBb3{}m);5J3 za+IWYijXL9a{+gXO2@pqviFgu$^Q*nTGc7 znk+C|0M!GBNGxyJIQTcU8qhA}YtT_=acnYSOWtcxllZy*dky&}Hfi2C)nrlzdUT;; zO43>6TV#_`mJz!)^9(!QeN8YEMWOh_R-i%Wz%BKKH*Xh&^faeK~ zezub3|FC|0&wZrySor&Ex$;Qa^^FTa*ki;bnxP=)?dJLx&?9F#48|-Ot z>n+G!0nyMORNs+k^cFnPkhbNupHY^uE`;1HF2fkW$u7^(+#NP4(=jc4-} z6y7WR8WJ)f(OK@i19I#AuvM?>Ge|6X?ckd_&8SbXaMq=p$;*v~Z(T(Pv>(<7>Bb@< zD|w7EplMmVWL02AxM%I@XXWhA>(`hg<|QWu6Oe5&6dJmbzX2p%`=&)sV6FhZJ1=}Vw+v>u7t*T?q}GLlZ|R(izpcO4?$J=&8gt{1d<=rh=# zQpjDWNKS&L^v+8RYdu;76Mqn=;Y{06%-1}&ZNw8UE~i`ttRlv?(?}A^JjNz#dLFf) z_dB`J--kOiXi5J45HaiqLJz5LiR^3qk#ep%VHzv;%P$2|+;y%w-Ci zmaV0MdhpO1(JyS-x-8ilo+pOr?|KpN(CWq}red2#R4g!LD|%2djby#Os|5DSBXam? zbo=eIZk3{fpMTW!p+D1TM_x#r4IX`K27~iWUd3H7=7==CA5m&47q0%5g#tODRZnj< z42(CVDCOSM0`fBo01bl)Iw|8R)lh~$%Bu+)-W~ZImUt!vg=1*b&pTa~!4m}1u(g|M zQ>Qh5jsePW;`}vA&>D8plo!>ykQZP8DB8vKqt(iviquI)V>AAdC)gLSM*mJeVx2(v z0_BuWla&6(5c%h#rygVAf)H~Pe@PTEPYe5ZI!|^s|P3t;J16AM27rb z9O_%`r|y9gDkRKzL%iDtmq*$%u!YL1i*KYmv>X=rqp-%}dV}k%6ZC;X^u-dXlEG7N zq5os<_y7IM|4T`h8$YW+4Er5%ZezBk{(CYF;Dc^@&iaC=Znp_!?B($|_x061RAja6 zQU@th<@^dfhxZub+e`@2Q}!7A=uTO@9>M8C-P(4sTQjILczn1(PI#F2Jf;!HIGk{+ z#TU`Uo;w5=$Z{2~x31=D#CpUd*73thdGP09JuUUA4TW5W`V{*id%u*+!-mU``dUGw zPFHPZIjg>4b4J9^_tMY(CF$a&uBkfn7N zI>am3#dRM77wkXH={ghl`wNy6vxpdyp?P%Fu8P|uLTr^aZ3~(4q)%_%FRA@2_$L;l z#d42#oNwsjP-uUjAu=2oeqq6AP;ztF^!xTvk9Z8|`so0g$b8>N zcT}QKVj!OidNJ_j`!y}dFgZ{C!Zp;b)aeYT%m1!)j<=q7pV;m2aZz4b!5u=qipQ+f|sBf=PFGjfGi*+bmq7f-fVG>H^wi+HOOsjYlUAp&J zjc(*YtrHqgWzzo6rym<5tg*w0PP&GM8Sh$Ua?5B@);n_pIL$<-@TX2Yp+U&njPp4t zw-$tD;u22b1)bzO4!AuzDGO8H)#@+!^s3pDCd|UvGsWVkhEfY-TR7*k%0$@+>?99r zopH-4(0a`l1Taa|o(;kNjiNP2+5chH@VnOpZ7;Vqmy~76jjt z5@my!O5WCgI1jmL905yT*NKFUz47^S+xUaWYA{wQaPL@5$7R7LnWwf3-e^kx$sW2_ zFqG=7=XY(@;U#g3gYv6E*x=}#loZkA%O6){4T3u!YYF?Vzia%t5S2x>@z5dB;k2l$ zJVmqS7-#tdZrs?Q*w?}5E$t0tuU2nVxios*=kdNw4*ooUo1pnkKJVJ{!~K|SNVy`0 zCr;du^9)jZ(vrfT7N)=QdJrkm1e|{1#?LwdV$TG=L%Yr2o&snDyjL>VOb21G1>LmB{yFt;myh6!vf}(MrM3$Nvc~taC0&Ly#p8qWa;M&ZFvHCCQDmGUz7Djox3`J5 z5G6gi)?g<+qff<7a>~Qoo{5ihm)&w$o3&1|FZ9#%9yHPFYei(~yWJ#m>|aYd!u)i-CZ~ zaARf69^#2*G@|P?3}CBt&)wDqp0T~AOkfUg zYWdI;vHkXQ@WFQJna=ZL-2_n?m;o53HzIpLX(4a}D~oR}-O2b{RubpR zv+rU=8oG}eUThak`WDkWG#j8rVKr0%8G6nmqNaXon>_Yzy7pX#X`4^gxSB0+R!{at zWl_9&^oB}+uq)1wCv;>OI9W;t(ngHK&Uo@+_*p;R0wa{E|J*v_O#Yqfvd>xanL-HU zRrMHq)~J}c-PQqh#Dcz*jrPX`s-q_wXfXSZ4j9F(6)(K}}{ z&UTfbwuX4chzUs8nV!xUmWBi{d$CB?RJaV zv>#C5A%s2VKcs&a+5yGiv&)@tjtAtHe;@LQG^MLnWQQ;XU@4B&#XRzse=^V2guUtw z?NAq(q2OY=&3CSI|FyY5Tln~0bkH-*Aup>@_Wj>sV!ZDUpK333T3AsA5}0TCQqBl{ zT7MUuB`n5@6RUTxkg~e(o2}0J>{_`2u&9yZ-pr@N5MaFc3@1Z z0U*255m2gmM`Wg|JY*0-9bh#_chPlfe>!xz?Z%wM3 z^VS72Qc>dlkk0iv!K~VSzQozGK*3m<4ZmPdrO;v@DV&$=_Ua@}$HzyAGmz9++StRU z=7@@b#A3ES>^KhCz6EN2Z9JYKxJR zRPij3Z79TV(0K11d47H#MFI#Aw_pQ-eEO-+8JkDCAj|z@8~WVz$QV|)K2t_t;fJ0^ zKj^eX_EMWSKuyW*aViEY7*&(UPW1lcU5P{QZZQRKQYpMSn6(rkg>EXq8T$?tDu^^TBeq1l_)=J1mf$?wm+JQmgMV#LXFJ->+bNh-`lK_o%x)h zhmeBGsW%g`Y;f-`ZTcGzZW*w4XMJLkmDA~Sj;YJz@xk*4MiJjAf;)0{(0t;>k4T(( z?hE};@gLk37o|Z`6C5RZ$wzmC=bCIvHzt+Ay-a712wwE{o`hoUT7|S`Ad{=Zp;L2Z zQ5naz)GEL=u&m-yLxj|crsiMQh#vkMiaQ`TVsQQ9DLAs$zx_ea-{#v!nEUKj%Be6P zHu)b<`ZQDi!z}RgP1e*KhYZg{^smEI!Ee-t4iK?DBXDc>|MQ?BZJQN}M`WBqxR*KxJNi`FW&T^P| z+xgG|sYYC8@|ydZU>t&BXvrP6+p#lr=2ddDgh5>Cpxg~HdUFM@r<}q}qIa78o{o@J zFYAuB&TYnrmd!&Pwy;!pTp95q!DE^p{Y4)w<3CPCp9|EV)VI)TbB0`iZ*1jCHkGZT zN!?{K;$letp4+Ij4SV3Z$A*m~~nd)*I|&{L_vMjloQOnXV48 zVX6CxVzh;JcSd?pP%13H1w*F!D^?SuazQ52eAw*6Wovc$}6v(c?y~pOa zY3a|s^glwI{o_c?fc*Vq(6NSI-a&(HW(TXuoB(vPPXM|qA|S3Bt#54i-NKzJ zxo4dqf2x)OksuteiRBVY^^(>&)UzjsV~&*Tf}!O}9v!v#oXYNqcFgn}rWb_0JSUYs zE<*GvL3YNyHTr()lSrXDB~Oa0SnKa3g(nf$*0$&D~vjMtxjV6kFj^E6y!SF{CFl zePp(Xwbt>PIIA}gs<>{Dd5SckBSE0uo^iRVR7{+W#U~ar_74kk9s_J?Z3c-7|Lp^0 z1*|5ecN-Vij1>SnQGRR4OH~CY8xtLGDS_(fIs;y`PC8`MZwt~H2q=owQq01T zj{1wR-r8SO@#P`|gJ=141EuofS`P30>p~1YZC(*?Rv3tw0jh~#2RBvGnDJZHc>N{Q zS<^b;wBV&;?!8JWM=1r+x2c6(n8o`m5iczKP$=K`4$v$T;R9Jtnl##7 zx)={Cd;o`600WSV1t=YYEU{+N)<&JY-Zus`usOWhKeEq%a%sl+y1r3Uu8Dv~;A$(a zwdv6DKgvR5(GbU_5Rw9|7j+IA9ol#dU1gO4dc(vE-*y!3TH#KHS|~45q{~0&XY=`? zj)})ZnINwpeLcejg^1@}{3NMcJ@PLpz>5lX%zRFPu3a(n*JMqme9MU#e3oDwdK z)3L+0HjiQf`(58o%tMz_@h2B~a$35|%RTH>V#}t7ZN-TS+wtORpE_9Xak21L_$@=h zum3&>WzGH{a*saAX=3k{#}}?^#*XfsnVN9PV4wSEpIpM}$7RLdt#WU29T%j>rAsCBWy2 z4Apac_lR5!yYs7e2JtGZp}DNs5Tl3v_%n?Ag~3|n*~#+mf} za^D3gP#>%M8n!lBPQx_G;WFqg0&jgSBq{D9oyxgx&m-xdE(h$;inQmuXu#NLT42}-C}DheT@1T)x{P3N7Vz13#=VE7*Ex$w-{5pOOEmE zFM>)x0>f@MNrpDiDA3hFiK#5j(ja--leaTe%Y*Ho66uXenak0hv7VN=ZM?6hV4!aI z+4_Y$*r9lpJ4~R~+(T^0rOI0ntEFA1hP?^;Ex>4aqu)$iD`b%SiY0ksErh1hgEg~? z?Pg~K<>#1eo3gRQxY>Gw?y?@n8i^am=e|7KTKG9ZICbblI#VpBl{0&tz(d|4YTBGq zC-ZKdao@<)$YDuiy6ix`)^%QTEAV%qtW^^IlV?8XY++TFcd2XMrv?x&vgXNqXn_?F zNtZvD6F4nXJrnDeD^&XqkA}y;JspUhomm*IHI5R3t{dvjpgj}*VO)Y_Tgngo&Knl?YK$2Kf6>tiI#Fy1vIMEX_9X`RMZ_ZK^wy)`>-ovkk%{4d+le8 ztL>@_Sz)pV--n1=#uy8BO6mMAn-C#l_kh+VK<+?PeWxaT8K%ikdGR~;uVY^fPy35c z43W~@S$*$13QWI>-e+$-X#8HV7o!JBI?GFie4rtG)Hgg99VjIBGgSj`9g4f6Z>f%; zrw?83?Vk&4|IX&v@$hGM#LG{i{WPqgMxJ7KrnqC>*}7q_?d%#P8rJDSW4NeWqGFWx zcgFuRMddsHR%(SL?}Gcf$@^GFQuD4~4{6K3oC#Br4O-sXv;@z^+zP^nLU~`1-hHOZ zi6j%1z{renusrzAx@q^8R8{b)J0fZfF+$)h3sdJF2_h zYs|0Np|)6d^;hSw#m8-Sty_SGp#p~DhMWCoxXQel!nJ}9_Lf9lDFCm zr&Va{$lZzG$yXO>j#jxZLU{AaJKG*l> zuoDp4kCd@rT0yOJ`yIA2-X#X1+B3b3Azexy~~Fq4#&` zmc^YeFz$MeF66w~vX@^4^g*$J{NT}TsP>xz{_yfGXt)pV#$93*op{rmJB> z71q=bF9zwvv#nUwIR$BacPI@SNSzdU>>uHYgX1G7Ej7k8qm%wGn$9Y!%`V#70a~0= zDDGNZi)$&x3lyhlDemqPph$5m?(W*)u0e}iaCdjh_rE>o{1>^&MaFoOk-gWNYp!Sh zSQ2@53>I%yzJG`Lf){;LTfIWb#4{*|t8eZ}h8OJEb}^9=OsN;0I7w{jW-`|x&5`|* z@BY3pW1x4W@%mEc0{d~_&;HKsQT=*WLkc|ygbX4Bp%^Juxt)%w)&SCY$UkGD6o6l5 zNETv^n8!pQb19Z&&o>2PX_H@1fJay&2RqLRpSCVoQ3}PHI|)4Uznr@TJ6Bs({>ss# z!ER>_J(d1B8?()=44S*Q;P3Nm322ILYqJurWS?ZAO6So$*bMbD~5#5ILgyZ zNlrM8^OZRYNYk(<8{^QAXMX3tev9|bWrxck>I0!YqLkVsfSGjvYgk3}B5dfIZl*f8 zUy;vNZq+)Qp~Kq=cv6R!Xz0z1X~zWd)O+m*>t8>ot?`B8TkF}d~>Ru;T@h(zp#RId|4n;U2R8*aIyH8rD^C==~`=p{qUk(s@lx}p|*S$Y;~ z$R^H0$;00b{-xtXBl-?H-$YL9?1+y2v}sOxe?sFSc^f?S!`OT?f+ZGZC9!QlJo0uM zNSN$Msfdz(KeN|(el0_3H`GKMm=w45S8S=S7Sjo1+ZVRz*kPo$(x+Ce_N<=!NN09$ zjz(@N?{J;bIr;z~0q+bU?fKvy3F|`b!x4AHSDsO2A;EGc3#B})NOmh-Lt7KZmVRtL z9@9HZ6-?!x6K^5BWQ2ot9C`Ux4V!HY{-QR@Fla=f9fVp4?K$Z)Ob}_2o9Rtn1WW{Per& z%5+IOgFlK=hSqd_DmZWdv1Fjs$kqdes419!3yzFM32T0JT$}_Hqao$b1=+ilU&oBk zx8B_ZzK}e}(ENGH>v*S6W$9|kru&qjqi22}Nz^z-vnq?Ex_uR)DV>?z+#3 z(M^fy`cjm*V#sNV-(UQR-eki380lHZ%=L1G6mv_sLzcu)Rh_-}lHP{EVkR7=gs`9R zSq3itj-*fgPmo)kXBtD;nN98Voo7}2r%+GdbY^W*9vX>qcw1$5i?UGHg{H09b>B~HqKgyGEAyE~B zYRs1Q5?(0ChPlnAPO3hhT@pOMQjOX9 zY#?&c-Yjl^-Zq6WKO`6H=dGtzsTNSI;BDNwU-PCx~8$x?-D*yA_eIt7=;0iUl|7@_d zYEa|P1q)(%Zc>c)Gusyxigwg1@70^rpv5*H&ek%EKXbX2$$cZx%h<@~%if9X-XT0! zj~(I16|qqrT(nfMD7R~+Wj)Llxe@cEK>YC4fkgRxg;?^Wi?4X^qeeqS;b&?HBvOV1 zTWR|--jktOup05+7N{<;AwMk)t|gS zLKOauG6|Rb4;1sG!iprSBhzd?KBMF*2aF>Ms*bq*peU29c9=wy5Rn#N$9$v%5mKzW zeJJ#!RZ6{kM87&=>3dB2O~4r5CLFEnCHKF@d*N5g zR%_O^KxySSHB>W{kVI38VmQH0=r=yxWT`eT{_Is)I3u((ep?(nSYswY9P{<#vfDL9 zDnKjqtIoA}e5qczNf)TvL}8};D$j2weOMukPZd3zYmcb21hu7H2}8tuWb9Wo6xAQd z2X*F`1+xQA5B9XSyFw+pR;dDuNcC1=h)hK%k@0msQJqAqed3`97CJ6Q+kR; zzIVL#X*KsfAOF;FzH%3Mx}IQA6Ki;%0LWhdfueh0gur-EPy7fW;WYtEKpdBTxJYO6 z>6pUC@43|U9<715;yVNPkhwjWpl1@t^RN6I2?P2{4`I0m$h-?B-h$r#!KP)~ND=og zOm38`dskPl%2<;H&x9JLfSGcsD`s3MB9>@eoU}H-?8_#ikLjC5VD*x9G!1_}R!Q1- z>yI)7;0{8(0YOMjKVlRVUu<~pbA7$GX}B=ckMINd#D$0z zrL*hz+!`BKaF`fIb9T2Maf7}pIWkWxr;IhGle{ZSsvRzZ-MmEQaZXq;L>W7?c4FtV z<4Hw(kV!Q$ZKbifBCLQC@PZ;e$JFqw5!|T?o0nzMc;d~MXG0v{a~X%-C%FP;N- z?M0N=*GPL{^swACjhEfjl0IBj6i3n>J?t~-Z!(oWvpGIrCT?C7c@`?G*^&-VFQ=7T z(#UiT+XIZa8sp@)ww+o7&ot<{U%P2p=O2E^q&Z(27qMuhH2+bg{z<+d*Y7fF_)`;< z_GiDnGO0mwv#6Gt!={rS0m~hveaJofUk+dNnZ~_+iREI`dE$H~>fV#k!-BskRrAjL zqRAU!#K5M+4m9_d)DlVdY(Heb5n$h*%GF|!o=)Xue=&Kr{(21DpGDcTs2`;{3Er7j zG2>>ujy^`*g2O7Zzq0&M#=B=2hX>mi=sX9X(+1_WV5x1~HW%#LV=aR%VKEO*Z4Qm7 zqSVbI;&o#`kLVpQ4ms1SkBuJB$Q_1P>&fXBkwUq-1%t{yU1Z1-eCR>h(IAPEr(9X?FeU@)@Ry*o zU18Zz*LOt>z?dqj7?2j;AN8fNQ_uYn+DQSLzVo2)8hkh(n%BhmHXlqPw_~nOH z5)W2WJzoCvc9D7I9%y}{BS%9%+FbNY=in^~OUiVcMzMhrgSc73Bz$juZ7cjB;1!}E zN)gL0vq~nvWjUp?431LSZqX?luz{5Rzsk}-b?N`VRB=H=>*yezPoDz+h05)-B+s;I z7@4P>bWWL4t~~vOzlP&?S&@vvi@;NKJ#JAR68GRJ_l?WPL|!l2;eNAgi>KPz2lCUx z%@NWsP)m3m)%6C-*4lX$%GcSm8(Me*!w`&j17!owo2mnI3oEhm;FM_)f7pNK*f_e^ zs#U;}dDEPFRbShbq25fm9GSK-?ZPIh*83@)1{fU0^uQ@PgWX%~gCS3>asp4E^INfF zeF>kfy|iJw+C2MVl1}{?9O_Y8&T$7_Fzg>vPMTwcy;2k*gtTCM_sdTnlpjNt!fh4a zOK0CXHWR%}WyzBNtQiC<7N)AdkC(z2a_l?AIMI0jvtj2ZfLI|z<}gtEITr_yxnvz^ zvnb{FT<@z*ye(;i#;noIU1O5hBB>XjpGfn&cRbdfsm$_Cfep=KWwiD?hIJ+J(Qt_=fV3YC5OGE^RAq9 zt#Q%2QOcv#SjV1DLXA%N)<@hTq9WB8FYS?0JM}~zb%wUpJE40E=YNF$K(*i_y{$5E z1Kug|;kKOz^1Yxow!(YOXhG(rSH zM3NRT;QTy>+!GugGc^R%$gpvo&Uia?n2o4rPe)G)l^qXBPxK#QfUU(F8`)FT5Nx5Ax?LI$>zt-av6{@m=UZplLe|2#v)alIiG-T ze**77hCf1|aL$1pn&=owJ&KqM%H9t#gjET}Big$2e&;`{o)W!O>^1f zpE6=*u&Lm{FVcO?+4R%T-!{i_t@&G$1M`|D>)EVTafga{<}qyTH=_t%WgjPF(Q%3| z@Sc#-%FxA9=|`~lr*`2gI*VVSvrqqEccqQ`f+Rh~bB1j>R$#$bTBO}d=wakZ=c$VTAh`?1xX=-!#-eiA zIYFQb^Lvcm`Ht7^E$#F55|vi`ZZ!*5TwNVjs|rQ3=h}yjxE=ipixoa4rxS=6G`7ND z&8NW|jQ{+zKnu7{c~PaJq4J3eJ>MVHg?ETD4E}HO<#)+Wk^qfm(f7E4!qjyCvV6LP z1q4;Ccbly-4MQj)c~6bBf7_wf>H?SJFK$ME$S33u4DGJP^l7tzk6d2$sJbC_T`;6! z_1RqU)3wl0zG${x0(Vjy^t5KbIdHPnu~4Ys-RUKbXfOydN1_7P`J+w)X~tsnv|OZf~#qD#ZnohuQ7kw+JQ0PkY9eZzFyc zB*5Rt$`;7sh2RHLRbxC%4V3eEM|~z#EnK*5ZN(t}#6bgJWdSbfW^R`1?XK`EFo6fd z#!E*cEx3oPK+fH%2gCG{N|36z8l1#qq|c8DzA`PMT)eon=Hc|> zvRKVC66aXFIyg6}cjhnfEsr^YDxL}N*tp&#!IEaVk#b3ByK%*qXY;n9BZ}S8kz-xv zcSpJ*8L#UUR4b>`Sp_<|bjg`TkZ8CmAs)ADc%BC*=53K;Pi&F;Sfr8VVn+47Vb&oh zTe0c3O8)HD{TyLhSCvpGsu4!VVpT4p`^ri%@vaYQfso-Ork`J0owFTQ{XRl5GS==x zTQqu4=Mi?JDN3!8UUEb|UW=nO@+&1w9Oi3+Nt|6y^0s*dlphiOULJlNe@mn<29)>S z0|tWVVraw z##|#Ztw#Im(JX)dT-*(`Gh?{Gd+M7mXEmk6_=$CMu4qGS<62!|anNk}1Dg(7500!q)t5g?*41QgT0< z^96%ubIi$n!XO(CzK%eRyr2ou(#ygOJ}ke9mZI0P@-T_-%w)-)wNN@*!BZX2V!-_Y-T{7lGU z>h^B*vlbSGTMOSuDvD5MCqXFLO#MSdFhpz(<|Y#8vG*rd()*om^M?BiAmq4)4*U7< zEvRZ$DPVpWnD`q(XTv$T&K-A(jX$({uf%SskT58IHT(r4v+s8aCq}B9x%^!eEtcTV z?SWX(5_qI+n-=u`jRR$c;z1~xFGBZiNznU469`6=IBPq1PC(;=FutYfHY zv0SR1i^e6|o#)^1*O}JUI1lr4Zz)^un4$1R+Ap2=m*}Pt#MM_pWG7@<>Hom@S(XeO zI3b7htaDQptum_lI}W15xUbzmiIhR{cHEua`=Wi)bqzPN)=~c9`z%4vGmZyo!&Tvz zb8EV_Ve83AEIjWR1O&PSPEqM__Pw*hMr%ox_U6ppad2^ zl-Gw3MWsN>Qk>o1c%L?D(t=Bg-{~5=p;UMR`?LP<;QK|Aj#ypq39umR(ZR~Otu1w@){y>(TL(F{9IyJGv;*lx*buoJLD^7v(CPwyrpTnO z1brXW#*x}xEIgm?;zVU>a9+&xDUjsgd6{A;Qo89R2qW$&ZRh!$=kHK?$x-N7GK_H? zY02665CNY%nYsCE)Jn9%SkkT>2Ln;k#%QE?YZg9uof#31cgR@vu89!^g|;3)coS`> zrcqH<&VEs&>BIZK`vTw8^y zSeTj%AM@VwP?~>|m1%o&UJAJ5+QkjjU&Q$jguIcK{lsh@mv0$Qih5RQpYumE-eXGk zy{G=faM=%z#6E?Ti7NHT%`(YNM~dQViE{YiYLCKDUY2XzbH8eij4essb1ZJhk9h3A zxt}7N^jW^mxMJx{^%&MIl^r(n5z13xPFH9;tkCo~9ID`Dx0?ziK75s3FZ6+w6Sd4z&v5!h5Uar_udC_qf7-hP&L%RL&*z%- zoz^B(HymV60{_oSb5tL=Q&GtUs`bvZip%cfr$~>=Q7gZ)eq@;=(t5)I0$JAT;!bjd_@eonTk=y)V0MhXhNB6^2#x(ca(Q9jd?)v_tea zt7n*7hZ`U0$)qwFP8D5tvSLoxwmmW=l7BdQ$W0a7dGIox6eLVPx4&7Fs>xcZa%D+} zw0Pg!45-Q#QSKj6aqKEY)2$LQGnZW>MP?3PD2Hb8G-dZ*>?^RfSHhDmy)G3z+fKsg zhu^+NzpydhtyxyE(RQx=1Fbr68WKw=R{j8qmov3GJ$4!$L&ud9l@qn@+axRMKq1sj z^xZtU+=pBBuh(W9bWcGmi;{<7x;xfB5i>!^q}nDFTnbVi$o&z*M=$({1GXjNI}uSA zei+?`_h^VMBjN-)9q&{kVU2h2XYsp<9q{@`gd;tDJhoSxsfQ=zmB;dZtR)VEz1jIJ zZ?gI{QaD@{C~)A5sDLowOeTx+#J!cB9|(rwU$R%09BBfEvwAk*@M?oJCii?8--apB zU_(fMQl^EG$bWA2(2`A)7?@Cct$r`JnF*G?|LK@(4NI!_G-eOCOXVfDJ56QKO_Yjz zy;5IMmM*79XM+Z(jby0DZ1C%!Q-v`-$H+X9C-4d3~d+tKCbe1lOFgs{A}DU%WuxC24I*6wUjhK&fdQ4{hcx*XsK=1)YnukVy*W9Z?d^huZ_3Lr_LO z+hgJTL*bdEI^VSiw)lUETRt~|{}TWLjF_wMy|B4VXZ65P=nyu9X(HzCukMQ5qb5aR zo8`PTYv|jdMsjD!7XIuZ?n{DXb6PLjHmp?=;=l(@?7D^GSJKb?^^Nx11UDXXue|y3 zlkXgka#wj@vvh4BG!>6$a{gKdQ>7bSk`Of<-_QTMsxOf4aVW~;J3wIyg|Iw}pML-Z z_}12`{7qAvs2J=eN~Rk@X^JBXZBfnFPd}I3SH-^yYkp~@gb`i>t@a4fpVysFInMxL z0?{Y{J{%}CH`nSmu|%KPYMXV&Sm?n-1f)Z3O(O-sC-I}mEOA*?{7d|q111o<5FsVU z%_^MwG5{qeEJvMFK2FZDT(&j8hC-bMa1gW8fxi10Apn|asFm$#HQu){_u)P|g_k|! zdYNfa-`7GO@q*u{ehBAJ&yOYoQGQf^m788QQ&cn^=twGiq`HyXzLP}#M(Pu(Fu1nr zCY%EIMKS8v&I=#SDVs-D#a&%`@$E&;+Y(?X$Js9f3_O}vZ6Anev$a7VA{Q5#_NU&3 zf{QkO?w2S_YM`zpFqjA#z0;R5w-KLo>A%be%8VbJC#M>IdO(U-8L5ZnDt?%pZM*i( z4^LL#q3xL&xs@muD!?nWX=IO~5V-JvASNe=*RuVg!`=ZUZsk8q!)i&Hz%)SIS{bs2|=P%(&!B3 zaI3NMb=_oW7r{z5MNJxb2cO&uO45J za-A^De5Q?qKg5-M1larY`#bosO#Q>B#(4$R;$ne$zD+ATbH{n4cD6?CiG5_u1+ zB?id7mFy4BspoC^Tg8$EFtnh!xgc7d}Cj0Z)*FA7CbIu=l>sQNsJHBbI@O~Oosr6d$@*{G!b*x zTbZdSp+iL>(xseBIZNb)+~9QKV)35HMJkiBfDEK8WEP8&bm_=t+giMF(NK~MgHOP) zSwnbT{9FX9^PIC|v9$Y@iA!aKzT1?Wu6I3O0{<|so{jN-w3y~C8GlU);1#t`c%Swk z$k_RBKWQ$*Dm&o3^v5qasIKD`+qK1iHRk-io0qYzkO9#|I9Dv24?*p?%L~y8FdY-5 z{C^{dv)}u94i^^s=9;N0S4-`aw@bFK9A_h3D1#jgQGFDv?z6Dmjtp1GYOUV$G}=G7 z>-#?#9~kr+u$}*ei}?V0gHfsYHG%;F2Mo&H>vwV4VehVB`R*Ds{m@mwkO%0BVZDoD zzMd6(*7S7-Vf-_Z0nU0#pqNfD&L0VE%q!Wurpkegg# z4R|S^_NI4=@!gI1O>8asIv3}#M0as5okhDDg11ihCh=ZBf6zNt6<^_dT#Iw@-UkE`iJM;7&)bQ1XlPY(q;8CR*3itCUcaf%FFN1gg{y$3+?}04!{M0 zC}4R|x!H4Iw~hfwmf%VAIodA$#yLcn|Fg#D7U(%vR^#& z#chomK3T~_uUTbQs^vil0bTg@j5iP_evq{MM&{ zI{!L7$xY->?dhnK+zqc&v&re$W<_8)bLPvjj&DJ-nu|o&ji`SiQNz@y-@kwCu*Hqu z|IvKnpS!MD+Y^-Q|=g8YqD3Fwl#UD{xy(HIN3+3DZ9DR))UHC{CuzH#^QT>7kKC;wu2n2m)+UC@e~ zxt-@Hh!3mG7}#o=f6wveNHS5Fe9@21=+L=o?fP1DE_~yL=5_R;*u2bw*`qCWB@EvBN@(#+H|jFTfhhq*hUWMabFSK5EIT%03@8 z!(Eq^Q@S2wl@u7x)rnI{ke7KNGY76I z7V)}oA&oB>>?h{^@*il=d8?A6TSz0MJpWM0yX*i)knoaT_>E?l@m28W1eBrG0fDV3 zf#E8+a*E@I^pXbT;xxb7M|#!{qR7(6r*&5}2Q#c2dR-Ofh}B*QX>@oeK91k3_iH^) z+>01mGTRrivUxO-P)55mZ&$)U%?B(p=n;3ugVZQPk+Kzy~D=|Va9Y_ld?@uDg^ z`O&0A<+KvN_^0LRK1wFSSrcOU{OD#|^F*b@s?|{o93qyF9n)=$8%69i@?el}St&%(hI_9IIi&rNHmS(sij?|l~9Yes+8Y3aZ}oX7k+NtU}f z%}De7!I$1u2eaQNVW|gE!w@&tHuCu5@ z7(kh5Ycbt&h+Sbc1iWd}#CRz?0Gh+baT(n&8y_ABHxE8DR3sj1fTo+Q0gfI+XPl^* zN;izH6|vh%NcAt0PZ)p$#Uua8G{Sp`*pQo}pIGbZMzdFAX&D^)jNLmCZ3D%);IPGJ zW4LpDHcS(2VaZGG;#9V3DegVd6s$BMji1|8b2i(WA`M=lGkn02`54&rlwKaiyutb` zX~~`_5^Ce;H;q|5#Waz!@W?LtSW>}aRHk}Am-$G(AOgh>pNgzMzP8?hYe^mEIv4A# zD3VWNVa(n0q~ozoBCo)uxiW$tEY> zSTP@UR7bi^d4K%D7`{m9#(U_65`ImIn-4ZwVHtaitZRv5+G?s{0*F9DpjBC#bqAxv9bU&8mj$}z*^!wJ&S3T9(s zecbaU*RjLrNctO=Y+3qfM}BAF3Zkhei^_go)hl?471AnQv*drY{&7fCz6fOmlI%WN2w#YDkrCA=)eXQ-$x)b@jx>!o%jJ4WDsaso$YrdiTrfS(z9Ov4)Umlnp~qQS;UkB>Av% zV!K?aS9^wMm93CkylJ_3XX(7({V_D?`l+qG`jIF5II{TVYUvz0)ub=^X~tz4GImr5qbhzH-L#Ce%O&x!oX&s-voR-3AS{AmW)p0*}Ph2xg zpzKR|@G8Ha9V@qMNZb@Z#uZO=o*T}&DLQsDx`M?`m36LrSK{v^t+LO4CrUTjdddCy zP$iydBe`V}^Z2A`ct=Dz5uo>O#2RYqJX@TxVcOa_c)DMu;bT-lk*D!k0uL#mV4bYJ zTLyPw8QsXQ4Z2kLk;46Gi}ISKFQVhy3CtcD;RPCKZMJWT8taYWPY917tNef}csK6o zdF`sXtI80aL(#)G6&W`w1Op?-%@dvPpAGbAUxI;i82abAJTvQX_n>ikc#85i8q9oD zoT&J02Yqex7(bO^e@~H6;?dAE&txGs&CrM{P63oj4lN;#C5L*-?`eT^-14$|XYHaQ zZFc%vUs9E7sXqvKGwQNzT8sEYYVvY!~QbW zGq|U9jK9Z?FD3r$<-Np0Bo$Cg-#vqw4`)C5mw}M{Q6%&duRcQxqL1077|yiZE@jw? z?p1rnarMCkgW_#s64!aVys|XnP&; zGX+gc@ScKPs_N>j*sRmvj~|gg8-;BlVeX0YRr>g;o^8cM`9Y03I8ZFO?G{E4$i}93 z49ZLgkhylCf04-er_XQIlnFImYn79+qPXHC|N~lCqXcWrD}8Ak_tu^u_WrhPSuecrvxRC3SsEyT9GX%HY)bjNq6T9YU`+#TFel zRE8hDL}>SrR>k3T**Vn|Ty>)C#?0YiW?>n9L?{L&9!586gU@9;xv2>UnsLDGL7;>WWGen$K z5)Pxlenw${6-u#%EMh5}ntPUJSYCMk65y^~Lf?96bH4uSxQ0J}u==iEPocD_)e#t< z%>P2EHQWN+QI7Dza*}{HPdJnW2X~!@YK!RhKM+kxMCzQ5ScExq<|o63QPjiECduQB zpEts_OZYo$5R~5WlY0pEFP%@T&`J-XofU?u09y%{qp@0pmqf(IR5}UO4I{=Q&ald1 z?$KdiP1D+`o{ma(vdg54=P5DKPX(47G;`qkN%8{vo>T&?&VyS%S0P zK#6AmzH{yr&Zwt@v2=7I{dadw>Wa_mksO|BNj!We$6EO0LTMG5Y>aS4D`UivYLJ|7 z>6V81t~Wm)mOg;(=}I^5SYpt!XRW^`|E10r1+^K2aeT#|;sl3m2~Xo83Fk;VhR@yy zDog|P16ao{E}DL+PV;xv~W#kG`$%JJ*Ow!Ioc(l=c>63Z6(}%wN?%pV4BUyXW)$^4Iv31Ft=-$6mYD$E@I7#jV3jc}OsD>m} z|9&XhuX6EHjOq-9n1=6~ybQO^Yhedz#_sGUhHXeY`QkZFX!TR#@P^!nZ3?H4hh)*u z)*nR#B?;I-D#neiVys{3_!gBGtiH2k&-NB<&C-`Txx~j6*!fB*I^GYcOKXQ&^!Ki! z?G=xBiq;!r=E{*P{9zn4^R(J#ty4CYTk$d>Fs4R(9R4)pl=o|lgr^+@79G^{yxw3+ zk8+LVujz8NtrOQ{t9v}Pxw6VBvl0MZl)8Y?ET-hMzOEn z1o%NKD{&PrS|rgI3!>ZRwgV-f3Hn?WT>qL-sx)_>{l?$bNlquoXKeYkwEduY*o(0Z z?K2|H-P)z1K&w{s)VzFD_zjXked28*1C{x?A-xn45p7vjF);*Uq(lFSBadv1}wb~<%8(J>?A$X+=112dDGfCe$c1o{<6_$qn(`AWyn3l62o zm%0I0!t$%{Q0f)j4k1S3;1_oUgGSTucP&xv2{8$d@diPjj+Cj&vo%59X(uAe`4XG@ z1be+77{y^Fw#l@@Xv9~*0rsV~&ASBuuI)n_YbRIXulP2;_%p(Sg$?z&_wIcJF&(5MY9QloV+bdmx2Gc1W^UGJ@0|8qr>s4k{3sIlsORq8 z1LwAjC%QtU>t(?*!gcaAK9H48JG`o&qS0fQG~Q-V3wDjX^l|FnV47cSpErY8p8?8y zo8&afU_6t|*Wun*II)0MfaW4>O&Z`{^eNm6B9*G;|LORU5FvdBgalYUJEc(3(L8Y+ z@p5xw&v7LJeSb%mgS+JVbqhVV5;2`hT7j^uJwd1B5`_C&cobin;oj(W?zMAPr!Owl-SGoQ(7KyG*@B zcllvblWvgi0`!8NCY@5b2@1c*>ofN)#FemjsAt_Kp}?S z)xrf3lGm6)HwEF^MG|!ERiXJzul#=a(*YVD65o~lpN_yym^y|2j4j?ly^dhqz}z?E z@2VeVh)hL*kkC)(F?}l^lpBCZ*&|wvl-1A88AD`m`y@|-hO3>*wqIK$X+@ZQ%F~+U z`HHL=-g5Fc%G%eNjPM;q;kLwfN7KU$`Zu6M!vPy&PW0fc*|B6pAZ@l_q&h_#810Yw zJh(u6S=WymJBFhfGrj)p>WX-jSeDQ4{!msHwAm1c87?yMlCf?unNKB0_)pmYJ3 zC*yaHA4yxt^I?_;dsT~j?=58<#({at>mEOR-9CWKkyn(}>2=Y-|Kez1`i%M@zW%9& zWTVRb$*$P(-=z-p)6x-e5ZFs*7OnRcwG68iyB6v?5ePI{LwUSPRr zDW5%jfbZs$%&-SJmr`DutqpHcUx?Os$&G-O*kM%RWNTOQnOI*La^}qTSxBBoUXYA= zVQX@;Yh(Cd;!1VGrRLu9&-pLrzwv<0c8&0^Sr^KaZ?2dMSijwG`Q5lh+wAw0lKFO5 zKR979i^sp&5osL8muHu9-OwYSmHS4jvhAg~u$o%wvc)t1;oBnlMzJS-;BqoT3Ndkb z=90!B+g~J{E?zCg8OT%POy%_-Gy*~e%oFUzVbOtCL7VT{E^D4f^I41Szs&MYowC(Vb-o*kCmc2)sIwL~G=i8RLE_J5|V!iz@nStA zk17%oW5_3hsI1(^xfbOs?Y3(C+sIk!LhWS+uCSc^SIDqMOokQE`bSxI&Nh-ev9tR+ zly%+Aje!OB%R^xdmhuNxIa)|#(ndV~3N0&FDtgYk9km0?rZM6ByqIG7)4^JGUYU-F zFRjU6qD8w4Lf-OH$vMDQJeAgIZA~+@0WV4GmNah>C1SV+F786WsWFsU@WLHo- zv@(SXi|TFEGYw!Q2N~342@DkOjWCN><{0@U@1e|<%n)7Q=5V9lfwAGI%`P$b84;K*}EE1ouYVqvt4=)vvj0VltII4V4!58VTBuCTTD zF$Af29RyK!9Yc0B^}4&wn(>^2h=d@Qzit7rcGG%&3J&q{_GtWiElY#XiL@HwQX#5! zc#Blg((18&+SF8hOk*VnrMtO3CXJOH`%ckqBtN?J6e?A;hT7Jn}dT+uqaJgPaYg~fF z7QLWz9e&xW{7%P1N4mBH%W-eHuho_+&2skiO9a7=)OYn?WQd#}4T9qIPgAQ7(%KUG zi-9QBMVKH_H@8eP(Lgu7i}p5bSmJWgzu#lECokqhbZDsR?~~E3+)_Hn;SfP}A)g-KN}#*XfS#&Iv?}kY*khMlbZdyJB}(2HH^hFn~c>i=b|jFoB>e^tw3&dg6># zr=KkvuwEAX%F357hnS+dSkB66{Kv{_b+PuBq&sKS)OmO6hO+AsPSUSlcC^V9hE%~IlWb;{U1-A4fUGN^8dwCpz=qP~DpF)h zrEdNFW#8=UPM~peU4Jj0s>{$n)zew1mBQ0B4aUlXLxM2KLa4C zSB8E>+rkKja%9h?(HV_IdN)9p5~U7sa$hbsEb@|8)){{3?7QFO6<>}KFf>p?b`Ze+ znT0XK!CrKqzlCTvTdy}{Q6)b6X^Y}JO3}`PF;Z|$F;>8}qObkiAN%W^Bh+2P2iBSj zCu1&#DiwGVnZ9yES(yjpwK>D20AR4x{LrE9?k$cDy=tdawk52~>38 zHK+5nz>~)~oeu_O3ZBm8ONmf zSy`#ok4ZbtOMEoDHTprym2uo`7g6OqIe>buqC@ReTb{|IUf%uQ$fR7LFmaJ}0T6uw`Ou70QvxY32-IYeiXY1~Twc}HC z$CK#9>`jcQ{j@LU>9Jp$;6#LH;58qHX@LVpDH#=mM`8@Y&gKL)aknpYNK^O#(gfx1 z-;RMO6$leuXU}f86kw3&G^cc(~!WuF&>#9UGawN)prJQVU(wd|wp^j8t zNXtyf zro6mMQtp6S@(*LR<8H@@u5nlu>4@aZa^xRijI93d{zoQbh(dkf!jE}H!#_R3p8iHl za70f3$J3(T4-%MMdW-q`G0aCR-~z!#mu#N1_8_0Ps!;0E7GI zlE~lbe7m&~GtkO`Q$;f+qJ*g>ipUzRVM>>kZgRP63{`#YD`%i`k=_G7PrN6&pi-Pq zbAPmL5K4F}Jn`M+G{yl0CRmeq@988^+!9AR7_Bo`ReQ-6cBPU1ZDyQRJlq%Bu+`A9 z#BT@_6eHy}BgEa&yzxg8ct16y zEFGI6{KC!Yi%%4dCA5lTkKTu7<7zycaybfEFD5w>>0#Y=T-HU^iyPz-0b!(Yq^O^3 z?v;v$#Nsi@!iK~z$aZbk{|?iQ3T0qK%1VL<5`LOO;< zT1vXRo1qkG7`nS_h?(En{-5WZ>%5q^aP2*NzI&~8-|KVl7SU#Zx1=2`su;}>qp@ER z`(a5HFeXG`!Ir%e;<>F33Mb!%Omgf#&|G}ac$S=cqLd#rydTS3lzdD6mJ#>MCrj1; z9mii+D9^IOLRK{r2K5U>vnJY7f3v!`pqUAlp2K|Sv}CPBxsx_EmGzFd+$LbUg>sd& zna9|RX&!a04}f=pq-03iMJS#i(awEc15@YUkF!PiNvoK!`2>IMtr{O?{nU_D#5nuA ztE2qC=z90sU5jo+&V9FnOt^bfwE$njm*sJB#@^Uz^H|qqzXVlDQ>VUXh|&l4=IU}( zxGW5NzLwRA*dJLh-qnKJTFBGa+hL$38WO2Bw!rJ*Qyts9YHQ#G{`i0BP|D}v4OUO8 z52W{A_!aiAVK(Gck?wpX0Fn=1r@IHeW*L#wpKkNLUM$N;$FJIuQwG{WpH0XQTCwOp z63s+6!8mK`^UjHVlouMPBLDd&hf=!@FYl?a?nh5-GKGhf(QCAviuLx|pzoKy1O6MS z>bp4#T%5H>Pz>S0nVneEU`R)f={8i~KWglx^OdhC7}HL@%z=Jvu0dnRSYh{Df3ydd z2kqTmfyCl8v%rz7h6$-%+T0kA*1(2o2Um-`@-PR%!Dr`B)k*YWdG*r3izVAFglCyf zE*xInmL7}EY9qDRbv-wco?+3Rtm6muhj;-I) zm}=ajS$E)LtR0HyKAKYpJHAMy$C${Bote||uPD{C^)_CqD^;r2pOiQce7eSn!g%Ab*JB_C~jg73Uh@_%f8j6&*QyQqIRuF?1J|AmL6 zZ-I!)EBOy&ga*Amk=Ng&s5_jsL{v5r-;yQU0;)b$cLZzJ2BD^R*urN&T=(Gx_`zI0 z9>Bj)4yJu8Tmoz?Eiw5_6mW(0fNQNF$>g0bTmhE6pxa)+4#@E*mCeyaa{Y@i`BBv> zGS^fS=rL+7Q7bfysHK!u1YYOXIEVix1-MS?HzZxcDU!J=MdE*6mkL!e-OkBX!SM@^ zn3nel_eVC)$TS&Vqgn$p?2#8rFUPJc*!ojMW9hzasZLqY;y)DK>&lv78VjawL@naU zO5J~;kLI~c@&WBR4E9_3*&<A3u*fM|%58kDar3gnXgdfrcHXw(oY6jm` z(X=D9ixJ+25!Y>`=Mn`q;`pNY^#o6Y9SRz`5*w1@K3E&YcI(da>&8S3Ict~tI4P^Q z0yhR)JL>r$*0b)POa0!}(MfmVBypLG?cxrEXHSbZ(XLvoUTT*40tY|EfqYGdnr6rDGC%ClBBcX$`jWT zCs#*j#>2eRY(6UwKkOjo?Wt`u%JGIA!tYd3JdAZlHqno4#kTlhmjWPSL?9$2EVR6E zs(rAzddkU(KJintq|<MN?DgTcf)V6p9$a8x1UvqO>qUy2$ox)1vEp-;NV83>#N? zXpDB)$_jZ+`sNWIzav${uj~w`O3UTo27n)BVS7hlh-i)i zyv9WQr>|^HsM^~+sWi@sp@eWf;hdvd2KBG!Mz3HN(v;tSWGAe@qe{{$WSs^NT^&!I zFcHaPMsD9s%;hiK=s;4{>EY{Vu@U8qjrnJDdJ!7JKGzc14s1r>u?LiwmFhT@ZTCklVhnmvZKRDFa4z45K~UyQH(>6jSsE9 z;n6(Jko8e`U)`iB%NG=cUNExB;U~hz*jfs|!Sv{`o+?MaL-%6ZNBZsC@9r-Mc)VH4 zeHN-*MRXSXXQ98uXiE5KZW3sF#p0e^E*R10oXl!7tKp^{FMn}cKd&!SUVs6ID4R~| zGD=tcK?zZ}?q@g%MEpjI4GBbn`Nm>52q@8C{drG%7yJb0_>c5c7n4AbqJ`!9Z)1hl z!9R*(qP0HwStMh*K4O(;DfiNn&e~)H0lddfMJ=(+1t|*CEegu~dQPPuYgk8v#Au)M zi;LxR#%#@3EYBQ0KcOdYPaL<+=L{YpwZR6^^`uYZ(!qOQwDp{`T{VRD>>czoLl-G-mclgi6s;<0mxt8DYI{#@s9v;qGW9ATqX-_;)E^*MzlH@RYJ49Eff!e9yFW8EZwH^$dJ z=>_=rqA&8;6+DdYP1|}osT6v(o`F7J!W8M6WFE8o%L?TCB=GwPy zty_}v(PH`$@JP2#USAW<$37|Z9Ve_*mwp(6z~49=u-@(71W%;#8;cD#60%cpEU8 z=sX>|r;I#zWZPWr%V=X}oECUq+v53m6xVP`Se{jg*)lo^eN$j&-d6+RQ5?O92pRw; zk`mjb|DhEuvW@gR&pOJW=CB38CvAQ=HOulM-P%ocRiF-kxnqFmPWQoxk`bE{`FOc`U_h( z-p99ZzA@fHbi|eXxHKAt)8Vo(zXIr(%O{>#wpCVaN5>+-Axx-w%kk-3*H4Y>6cx=!OYa`0_oC}S;vVnR7%J^deA(k`mIVp8FJ1nr0oP9{64 zMP45U{e*cpGgRUDc?Zh^iX6aw3{n2QImrkM+r9Y(r3zM@K7mXxD#%w(V(vJz{j584 zylQr6A$)cP67$dWZ`e=L6;PQhn`DJKvPXXR7lL%}ere|_)Q=kr^`P0>f~?X*CtF{k zkyE29%X(e2{&BjrsZa_LRhr)XoEORZLMDN8y%zlhqZ39=&Veoj$1WT9FGoEMhrfcHWg@v zsR6BZM=6x|Kwd1H(W3c%^X>TWHz!M9i79VHuMvs7xj4?l7rPJXK3#WrlC@Wc@4XI>dX z;#ULLQD+=d*j(SFC%xPxwS{wjqiqEky**!FmAR+h$L0iDd>sld0FwStfriPnBRW88 zs9Njh$H>dAj=CUM8qyChpbv-iSEc6$p5AuaAhlSDe*CyN%r%|?8?NvjFakMsyeqLH z#FO)|RR-D9Hs^Y^@4_8tmv}-OLxp}d3f+EJ?y6`o|7kz(q%A-$#-nDE86T8@a9z0PzQ7@5DRn(BHB0aQw zY4Utt@dR@jJm73^up`7!o94*nZ_y|g0$2aM$6K_>7LPzT#)Kb3c55N4GA(wwu^aSw z`KK1*VxUH+lu7v#Swr05HXo%vL4$*h3aAkisvbCMZRY)ud4 zC3G!1yJ1loFi~RdhHQtaHa9jpu-Uk^bdASRNPDEOm6%|UwhWy(F!eS5hX(g9xL=I! zvFZFX{dku=|t zs9+rIdQ-~~g=S5_5dC2BG^ZhGa(8UBCihzj0%Kz*-(r2065+owu5tM`r?0i6EsZWs zLl0RdKj*rG91CS+%;$YCi18vimfwt@ngJh zza46CucDq~dg(-!R9GXWTw1<*1?T=^-+h#^ZF-RNXz{ynx-i$QEn8A2oI2hBb!ju6 z8KZb~oUGB&R{f+~bIP{6ax9^z;mgjRxt!9g zYmzk1M6V(P6LlN<<>iqmV#n{gvFsP}vh2Ku0em6k8$TzGKfv2l<9#EXG8kB38T5f6 zU)-?TFOlo9$yGj;hV#qF_}moZVp{o#_gFo`A9clIojn1o&(_Dr=ElD}#|#bg9LFeA zhNnEQwEv<9P`t!?lr^k?g(=LL5xqzZS+|T{|9gv`idQu4a>7RE$EI0#R{>o#2lXy$ zewKg&UM9ruroK{+g)HA#yZkzhuFkAeRfXgq!kx(x^6i9^4L&eO`IO=g)rXkeW{fe- zGJ5p*-~c-=U#5!XvUv9^cqAD;{6%>hLH^>6%;K@Y!w$rnsm;#y5I&QE4(m9#I$O8?a0u36T^C(@(8CD^SAFd zzCJ0<3MkfCHbRWt_p3tOtSG7tJJcpf$t=WZMA;(xKF2h>HCe$$317N&Pt;8BOgmN8 zXZf#;TQwvnuiIu06Bsr&lbg{+f4LBr=ozPZ{;GGKb!J=LN8ex(pewAmxeB_S6Ynoq zbggl9dxWsRX=+T^A=cZ7yK_Itw=XBKh@mzG;Wl@HG(xKate;OxV=4XUWcW++twk}2ph=(?6)^T!Ktw~F+n!#>+vAeln z5oYAlykavWz2~sF1qlWJ zQ~wUu{Rd3_r8W!{{Z(!Zm%gvJ27)?jV-A;TBm^6w<{^RcW-mLVS< zu#!?6EWW^UmXUqe?=LQw)PaPL zG*+Aq{nRxBeemSAetBDz1*rM19+TXjjEysSKHSH(M-V z8JCN$M=Sz80ez0nKZD8?v=ieDz3((3a2Xs>iO~$9X@>Glg$UH~%Hp9p5(wmdjJY0p zz{#f>Q-2e%Bl2!IQkHqm`}p%q2^dMy%N9TI#Y#6P5z5=}v0So-=RdT+hI8vp%9g>0BAA&BA~q6}V3SAoWfunpLHL!d3IMnZswP z?V^=16zV0~ztQB)PwYdjzG|mPW7ROB55Ng?8103P;92SeR$zO72y{nIE?3`vq0=!L zk<*7g6k~&=jgK_s@$B%F2mp6m{!d^j=!zI!UZ>pw7yE4#tzEAS{(JgI;PfB9AsOz$ zS?rA~dP9ttU9|L&eeI*0b8L`qSasjVxU_l=mkt2n`;hZfJ<6rgs>S{gN54F8Yu=;}X*x+P~=7ZEJq^{=~uj zNsZ&@EcC5|%{J)&-BgY2o@+}RjM11UWAN8rl#V^T@P&Xj{XRn>U0Bak)>csh$Q;c?^>VfS(Gv}SuhhY-xGNy{i zvGw10viX!A+dJDHyB%3c?gkG2FxZa&6wQyx+`v@!;)7iW_`y=+dmGIr`D&it!1sce&xK@VyAtz@ z^-^CeQ!}Y?xUiynq1zk9dq8SJR~vg?xz%Q4`i7o^9~+}|k&Nmqz5J41!dlAG%Lxy) zvqwqOg=04i&V&?7**Lga{K@mI9UJzdTc6I4|DmyrGz|v{;Th|$&3!*c8FolIyj=OB z)zV%2azJ{!G1a%G>B zD)Rp#&V-^c1nXrdgV+5im%-)=xu4p2d52P}qlzCFlUv<{=yzO~+TOkPZC=s~aFE$l z2|6)WP^FJDHm9I(3t&w!PzKj}#VZf?ZI@b-d{)A99IgVXhnT#niH>0#@c4NDnozDQ zLJ@LfKzG(Ou!x6D?B`a(l;-0HY~ZW&Kl~ebN4T}!`gX2X5&6RIsKX=m`+*+=E1fuy zo5Sy2+6%PR@b|;)sdc8qjE5bG<=HaqwqK&# z$?#}7DQIYlp!yy8`V~i}5IIge8ih(554EQf7*$!zzUC zxrXj_6eO2jo~J$X(M6zXvbJKgG zXCSZfQ5Nw=OpLt95hL8}sgPNcuCr#~S{1)+L5a4%CU>-&lvMqu-+T20AYDu~KN?OeLR?e<(aLkN)M|qK^|_|CLun zm}Gr+{b&+;?py~gr$pkbr8owbJc^$C$I!<7?AaaXEM9fBUctZp1jI?KsR$y;VjJYO zZLd|O^POo|Mz=KP|M*|x-##ZM_Z=J3~EleEciJMgVzL z_N=4bk)c)yCp`b3$2^6fO{^={Uj#yQFwyQ$I$=86(CE@X2Ji+RTAXN|x;UrzgZL%s zO;#V3&WjO>YuGtQuLO}w*5-fNWc*#?aJ@9B@rZ)oJ_!tA+UvmR^)R8BIChm_9a#}G z{D2iaE+R3?a}lZ^3j~H%wG^tJp)eL9W5!lMg6vc)xGJfz_NeWPZ-*lLBFWKzXgjnS za}O8BQhlI-bYKaB#m;}A!lNPTEaN}4YT}@A1986?%vm$&g!)BQ;Fce>bVpiNsnxo1 z)$1Qtxe>~=zg=`$k}BQxE#fp;7xm+PL)U2u1q>yozEHg@t5nQo7XO%Gv@{}ovDOD1 zc|O!!GvOo?u=QmQuV%Sc3Dn;~!0gzGKP2^xcz3qmkY`Jll}Amy%i?)Q3>j6$Z`I^8B{tETH{1rdtX#pBMq&!i0r-7DEd6Bds)zdN*nf<1Xc=8ZtJw@ zg!m~RciPe3s%jGRNLC!23gHwjn&cKXj!`fBJ_K1=7Z5!s--+p6r=6FU+nA~irS%(r zV2t&_-%O-Udj>7d+pPFRvcT*9ev3!dt9DrizJGXQOYFMTOh|CmExjLlT~f+yrtGOn z4s0Pm_dY*7)tpRhqtwyCVJ_yh=9V$m^~q#?jbgHB&^;F>4rRwDZ%+M~X}zdoJP(42 zagF3pmu6#@af)g=CVZ^m_{T3v&=hrY>RXT__CZ(XrvugP0q%`CGBPe;xXA=blVAIa zIKKFFU2t`)0CfiJlDxg0I%mei2-9;9t+V5HA9ithA{v$-XyM~;F2aW&B6SpyruGlI z(?sQ|__R6bi;TmI&2Aq+et=>*h0J^ADSwQfr|MT=h-i{Q_5(ga{=htPFpD0h^Skkr zE$pV+5Q~-0(O`#O?E|ZZ<&q6Drh?ACJLOABkMI&j%}~LF+Y(9egNGeg+l9mdmgWj^ zi0EsWgnG-Z#DV?J$0xnt`CP*_b~47AR+U{w^hlo#M}g;Ib35;81TG6{J2!7Uk@C<+Ay$YG>& z5$fsJ|IlPG?ZZipMSf{TT!#`2%71Ej=Wn*3Jc=>j8d+ajoJ)*W%8j;%c5I-mFdtIZ zLMSnq#nM)@Mbzp5Sx=p=y0wJ8|9d47zR&r&VUGVQVMWD;P@0)KKNcMZI;lM$lqU&M zt#3mOweSi(di`1Lpvn6N`yoMm1yS!n9=L8#e9xaDcu(JmC^F^rR2$a%dk@v7PnOI{ zRyTmpW-;`DkLHB9qrdF$z@`WNV4ozQG}z?|R;HBv7unC~bt0t)^u$!Xjs;^2M{fyIt zJ!qjdvq%kg`hg5-iztWLqhNkQAD)r^M zA41J~tA3(scc^XIlWmaSHPu=)-`L$-?30f_V%=BpmKL<)U;)g4p=!WEjrL2dKw(m$ zhXCE$8pu;F$nMrU+!>GRTJ+;?E5B7&k)xOfdZdu?Fqh&a}3 zO_JA4U+g;vh&6YT{!*cn;$FLp?mDmKW!7%06tzEnEd2*x=tgt@zl;RmsdH~|Bqgk0 z9nX`#xAl`jYAEL{70`fF1Q8o57sivE1T|tLqxBPv1&}N@xm5jP&THhuVXg!ZP)5&+ zIycrjrZ$~$IEEiYcc-L+u7)wBa=U5vFtPx%N~1tojFw1a{i>C%7)=E#o*4*On|^%* zr4OxOt+I1?mRzpmK3dC6U?F>@O^$ICbR4PU~0sr5|06d2yOK*;yr_e;{YPEA`o zc3Oh2XGAoP+fE)ZOm^`tO4e)Q0i+DDDSS4n4sf%Czu~+r1by2usM1F2?N5iICk0^* z(f?v`_=BQ2%z>k*V&N93_##kU^Jz8yaweqh0{Lk!PxrY+U^YIH7Os|O8zgll=4@uu zAjuwP4LA#2r~r$||8UcUvg~ofDWuGYe@l8u7WYlK*}~mqhxT`hcTrFC@BOt078ljs zUWdZ@=(7W5Jz90Y(?f~uZG0f(j1Tz-J}8o&7*`R9&wpr7uX%?yTDlf)9$)^!UT=x8 z4(!W!Wt%Mg#b8H>1q}AvpJ@aDKCr``dnWWDpJ&TA zTQ2Tm#z)!ZXIXUdDQ-1ic!d_8U7AesafN}O7XnRxs`6#+X9@Zi**+g^BFS3ah6$sF zGuP5bWv!|1UGnm`Nku0&J^(pgM^fSZc~0Ts?CM#hXCB;7qA(rXU}VkfEu?NN@w*O1 ztnES^_R}vtsjQxF+gAroU%0)n>A$_d$suX~3Iu$4K~%*zkYtl)ZiF%}so zTb~FT>BI2z+brHscdxR&p{ytuav#6V0}9=H-*O%pSn0y_)gyy)6kCSGlcOlZAK4VH zhc{joa3SOJ2yRJVeQG!7uHL-%wC$M^2gPNGDc7OJLG|PN;QmS@6)#2vB>f?)Er-%} zl|;bMp^QWAKQzP8ZQ41_>1!m}a4?GH0r$;AbDT_>aLbAX5XS}PiK@5H6`U*bl{){u zy`AJO1*K0_IA>P&Njt83*6t9arue&D=NO|^SpBU6F%Mx58|TkP)y=a9nX{!-ZbWbI zoppP{xZ7-rhrkhMBazol9L#e}J|*FCLjE! z4F)qAPfFXo%n*p?UKk|KCr{Vn_qQ2gG~ac;ql$IPaC%{QkLto$D5N}(wjVSa9bSeQ zdfR&=cXF(XSu2*5cKBKaAF8Mz-aH&iB5fYrgUuC-!F ztJ$Kycng^F;M}qGc+W+PgMKaA&h2{@kwxkFaj7>qp(c|0o}Fc%YIbq)YbJ%OQ*+BD zhFQIp0Xgd-O?y^J_&Yq_8><`R7I=xuhE}=csg7hk#LyT?zGcm(12Iial|JHY1&#N%W*%aOa)J6N6VF=Z3cB_Znr=VeHA2C4 zih4`D{I6uL4h@N=`1HDoTLT`qoSkc!3hp*GFj^fzFWVokv( za!@DdlLZsq8khH-y}9>xmJI6Ps+>4Q(Bh1^*!i-Z%7sNj<`w{~vCw5~^N{07{o>#Z zKW@qtn0iMp`gy3Ydvn0L<<)Xu;H{p{!1ncQE}f!V-R~*T8+a0juY4FMw`|*n$=M&;mGHCmL z%Hg-1X}V3KBo>tnj4H6#SUIUF%A7kaK&qV3(WQ_vQ z5bz~55kUZ)2DFJp&7j-g_~)a8qL!@i(}2^T*NJ>GIRT#ds1Q@-2}PH;hMKGTBPCsD zEqxbXq-tv7P%lN5XXH%tB%K?Oh3(9`lqt!@i;Bqkeog4_Y`%M4WecFTSTCF(yG>m1 zQFnavAKC<+vX8B`tB{94*Z9)z&$}hQW)}c z2>U8nPznCoG_Wn96z-=hQgpUq#-(R?VXX=sfQC^fk=>B zi)>y@tpIEg+av$q2GekV=A4b&=;>FJ1cipQnmiP}wZYvA ztxObLslu;`#vLe+Z;$aeql_hoRBhIcS>jiOdWQyj*#Eq$zNBVj{VG!|ycOqP+t}Dt z*BJR{QXmwIz#@{L{L=?2?N2WQ&;!`I07AyhBW{m8@}Tqp{T=XNyMCnoPxS7cMg&{cawcX}5I9(cb};WdINZ zm;z~BR&ISXGTB6Kj!%IL8C`n?KL8aXYybaQN6}BEtSG=Um$6RvWFf_-?LR9+ z#4FY}Q5wgHI&CjE(Z9B#of#YTf_&@aZc;yy9rfpg+BD4>D#K57qnSi5geColcKY%oik|+0M5mQ))Xc+yu|;@EQVTgt zUGj+ayd~UdnB3a9Vj}gSyq)_IYrslJ(1SB$vcKV*Lh4AiA>Xa(?Zkt-%iS94ZOODI z-v`Ydo|M3*0I}HUuE;H%aOLEs61Fl*(RxYke%+{BBP`4N>u8jhX}`AUo^>SKgJ87K zFt2a9m`$?T)mr2>;o387E~2j$lrg_sJU^F;(9=&98rv=`rGu48i%ZO_yP7H9IHoq9 zcZ@$iQ^2@M$ypqsU}+` zOl&LvSW}2h#OVIe=`J<%;|~(Ccxm1#^Y@y=VnZn0QJjb@-0fNWWR=P0F`3K4z9jb) z;Q}ZBzHyY{(tdhJE%r{}b^u%V@t^(a=g%=*bmIoD?>yzdf|e8H!b`_=8v@D9_WpMrdbh)%O8XEC3(>lhs*9>!8brTwxMd}?WPJS)0(GmiX9 z(|51ONfEle8+;qaHtLff z`ms>UZZ8@y|316a|F%CMTD$iuqV{IU>fwWIZl*J1__32H#zI)#6NxgJ7uNT4+nvy3 z9_XC|R(~*Z?;cbN%A578n5j5!_i)#e7bh(C+>Qv&FWJ*h1svbzd3?4-#7;m=c`lxy z5!U!qE6a#3JaNZ6%3Y^N&Ns4p92Hd+o2#|hxgjPzO!qw$aH5?PETdZsl?1rR|1Um0 zjiv)iJ0q`iev`J=X4!h4Qeop&^h6Df<;LRn-`ZX z@o491kmvFaK|OPVJVRjewzk#a&PsRlQ$ckGB0YcVv%$pNrB(YdyQc7WZ!gwDu~wA* zcE~5035b(}vfi$We9eleb;ese4}5Mp8H1ljE;TWza1_f%>P8ti_5 z1U=7rUQ=l&Do&8%d3-Il=Sb;(ba2_cB0b!50AmPZ6ACRTq-1L8|aDfu-mEbPfX8nRhF5fqOl34Hpw z^?7)~|4-5-2=)x%=OU!lK!+nn(G zxMDe+q&)Hw^}hL8QT!DbKtPYqmtq2yT5^f~-quY;#``>k44pwI6dWHb zc_}T;gDEI>BhSFm>0#eduRVDL)UoUvMP~-%oi8Hl4}VnZ2+yE5%X$6?>7JiI>>ltl z#oT0(CqENTwb!1j^VdZHo^Yp;m9UV0VSDJynoqi2ikDm|hdWS{wsYg@?NpUm;f-Nj z{%E-fEFqj?7@ZZ>>t!k5@z_TyW6Q1F+&iZ;XCHmV91*g6M=9$j5 z`KE8fJee4%3*_vhbY;TSfUfhp0M>^?U=;fL&h$Jc7QY2gBBiC3nMmOpmqu58TKa){ z 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 H_DB8?qM?i! literal 0 HcmV?d00001 From 238834663a6f5be87de9bc33308cc48bddb6b81b Mon Sep 17 00:00:00 2001 From: Macpie Date: Thu, 30 May 2024 13:16:41 -0700 Subject: [PATCH 27/54] Fix link --- test_mobile/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test_mobile/README.md b/test_mobile/README.md index 42568cd19..f33aff405 100644 --- a/test_mobile/README.md +++ b/test_mobile/README.md @@ -21,4 +21,4 @@ [^files]: Maps of hexes used -![Hexes](docs/hexes.png "Hexes") \ No newline at end of file +![Hexes](docs/hexes.jpg "Hexes") \ No newline at end of file From ee70bf64d335b3bfe735842789e72ff4a7bbe74c Mon Sep 17 00:00:00 2001 From: Macpie Date: Thu, 30 May 2024 13:17:39 -0700 Subject: [PATCH 28/54] Fix again --- test_mobile/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/test_mobile/README.md b/test_mobile/README.md index f33aff405..801b92fee 100644 --- a/test_mobile/README.md +++ b/test_mobile/README.md @@ -20,5 +20,4 @@ **NOTE:** The test will `docker compose up` on start and `docker compose stop` at the end, it is up to **you** to `docker compose down` if you want to clean up. [^files]: Maps of hexes used - ![Hexes](docs/hexes.jpg "Hexes") \ No newline at end of file From 5682a7d031bf6a76a734398812bcb0f0d249ddeb Mon Sep 17 00:00:00 2001 From: Macpie Date: Thu, 30 May 2024 13:20:26 -0700 Subject: [PATCH 29/54] Fix readme --- test_mobile/README.md | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/test_mobile/README.md b/test_mobile/README.md index 801b92fee..37982011d 100644 --- a/test_mobile/README.md +++ b/test_mobile/README.md @@ -1,23 +1,24 @@ # Mobile Stack Testing -# Setup +## Setup -## 1. Generate data +### 1. Generate data -**NOTE:** Data is auto generated if you do no wish to change it skip these steps. The commands are here to show how the data is generated. +**NOTE:** Data is auto-generated. If you do not wish to change it, skip these steps. The commands are here to show how the data is generated. -- `test-mobile assignment` and move generated files [^files] to `docker/mobile/localstack/data/mobile-verifier-data-sets/` -- `test-mobile price` and move generated file to `docker/mobile/localstack/data/mobile-price/` +- Run `test-mobile assignment` and move the generated files[^files] to `docker/mobile/localstack/data/mobile-verifier-data-sets/` +- Run `test-mobile price` and move the generated file to `docker/mobile/localstack/data/mobile-price/` -## 2. Build Docker images +### 2. Build Docker images -- `cd docker && docker compose build` +- Navigate to the `docker` directory: `cd docker` +- Build the Docker images: `docker compose build` -## 3. Run test +### 3. Run tests -- `cargo test --package test-mobile --test integration_test -- --nocapture` +- Run the integration tests: `cargo test --package test-mobile --test integration_test -- --nocapture` -**NOTE:** The test will `docker compose up` on start and `docker compose stop` at the end, it is up to **you** to `docker compose down` if you want to clean up. +**NOTE:** The test will `docker compose up` on start and `docker compose stop` at the end. It is up to **you** to `docker compose down` if you want to clean up. [^files]: Maps of hexes used ![Hexes](docs/hexes.jpg "Hexes") \ No newline at end of file From e7781841dcf8dc57bd852864ac37439bce3dccb4 Mon Sep 17 00:00:00 2001 From: Macpie Date: Thu, 30 May 2024 15:23:36 -0700 Subject: [PATCH 30/54] Slightly better docker files --- docker/mobile/Dockerfile | 7 ++++--- docker/mobile/docker-compose.yml | 5 ----- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/docker/mobile/Dockerfile b/docker/mobile/Dockerfile index e87f5600a..a6d75fd49 100644 --- a/docker/mobile/Dockerfile +++ b/docker/mobile/Dockerfile @@ -45,14 +45,15 @@ RUN cargo build --release # Package Runners FROM debian:bookworm-slim -ARG PACKAGE - RUN apt-get update && apt-get install -y \ libssl-dev \ ca-certificates +ARG PACKAGE + # $PACKAGE via build args COPY --from=builder ./target/release/$PACKAGE /opt/$PACKAGE/bin/$PACKAGE -# $PACKAGE via environment +ENV PACKAGE=${PACKAGE} + CMD /opt/$PACKAGE/bin/$PACKAGE -c /opt/$PACKAGE/etc/settings.toml server \ No newline at end of file diff --git a/docker/mobile/docker-compose.yml b/docker/mobile/docker-compose.yml index 6aeb63387..b62a8ceed 100644 --- a/docker/mobile/docker-compose.yml +++ b/docker/mobile/docker-compose.yml @@ -55,7 +55,6 @@ services: condition: service_healthy stop_grace_period: 1s environment: - - PACKAGE=ingest - AWS_ACCESS_KEY_ID=AWS_ACCESS_KEY_ID - AWS_SECRET_ACCESS_KEY=AWS_SECRET_ACCESS_KEY - AWS_SESSION_TOKEN=AWS_SESSION_TOKEN @@ -76,7 +75,6 @@ services: condition: service_completed_successfully stop_grace_period: 1s environment: - - PACKAGE=mobile-config - RUST_BACKTRACE=1 ports: - 9081:9081 @@ -97,7 +95,6 @@ services: condition: service_started stop_grace_period: 1s environment: - - PACKAGE=mobile-packet-verifier - AWS_ACCESS_KEY_ID=AWS_ACCESS_KEY_ID - AWS_SECRET_ACCESS_KEY=AWS_SECRET_ACCESS_KEY - AWS_SESSION_TOKEN=AWS_SESSION_TOKEN @@ -119,7 +116,6 @@ services: condition: service_started stop_grace_period: 1s environment: - - PACKAGE=mobile-verifier - AWS_ACCESS_KEY_ID=AWS_ACCESS_KEY_ID - AWS_SECRET_ACCESS_KEY=AWS_SECRET_ACCESS_KEY - AWS_SESSION_TOKEN=AWS_SESSION_TOKEN @@ -144,7 +140,6 @@ services: condition: service_started stop_grace_period: 1s environment: - - PACKAGE=reward-index - AWS_ACCESS_KEY_ID=AWS_ACCESS_KEY_ID - AWS_SECRET_ACCESS_KEY=AWS_SECRET_ACCESS_KEY - AWS_SESSION_TOKEN=AWS_SESSION_TOKEN From 589ed415b1c13700ba84230c83d32d98422c2ac4 Mon Sep 17 00:00:00 2001 From: Macpie Date: Fri, 31 May 2024 09:59:25 -0700 Subject: [PATCH 31/54] make env into file --- docker/mobile/.env-mobile | 4 ++++ docker/mobile/docker-compose.yml | 24 ++++-------------------- docker/mobile/verifier/settings.toml | 3 ++- 3 files changed, 10 insertions(+), 21 deletions(-) create mode 100644 docker/mobile/.env-mobile diff --git a/docker/mobile/.env-mobile b/docker/mobile/.env-mobile new file mode 100644 index 000000000..844c15e3a --- /dev/null +++ b/docker/mobile/.env-mobile @@ -0,0 +1,4 @@ +AWS_ACCESS_KEY_ID=AWS_ACCESS_KEY_ID +AWS_SECRET_ACCESS_KEY=AWS_SECRET_ACCESS_KEY +AWS_SESSION_TOKEN=AWS_SESSION_TOKEN +RUST_BACKTRACE=1 diff --git a/docker/mobile/docker-compose.yml b/docker/mobile/docker-compose.yml index b62a8ceed..f6bd83215 100644 --- a/docker/mobile/docker-compose.yml +++ b/docker/mobile/docker-compose.yml @@ -54,11 +54,7 @@ services: localstack: condition: service_healthy stop_grace_period: 1s - environment: - - AWS_ACCESS_KEY_ID=AWS_ACCESS_KEY_ID - - AWS_SECRET_ACCESS_KEY=AWS_SECRET_ACCESS_KEY - - AWS_SESSION_TOKEN=AWS_SESSION_TOKEN - - RUST_BACKTRACE=1 + env_file: .env-mobile ports: - 9080:9080 volumes: @@ -94,11 +90,7 @@ services: config: condition: service_started stop_grace_period: 1s - environment: - - AWS_ACCESS_KEY_ID=AWS_ACCESS_KEY_ID - - AWS_SECRET_ACCESS_KEY=AWS_SECRET_ACCESS_KEY - - AWS_SESSION_TOKEN=AWS_SESSION_TOKEN - - RUST_BACKTRACE=1 + env_file: .env-mobile volumes: - ./packet_verifier/settings.toml:/opt/mobile-packet-verifier/etc/settings.toml - ./packet_verifier/keypair.bin:/opt/mobile-packet-verifier/etc/keypair.bin @@ -115,11 +107,7 @@ services: config: condition: service_started stop_grace_period: 1s - environment: - - AWS_ACCESS_KEY_ID=AWS_ACCESS_KEY_ID - - AWS_SECRET_ACCESS_KEY=AWS_SECRET_ACCESS_KEY - - AWS_SESSION_TOKEN=AWS_SESSION_TOKEN - - RUST_BACKTRACE=1 + env_file: .env-mobile volumes: - ./verifier/settings.toml:/opt/mobile-verifier/etc/settings.toml - ./verifier/keypair.bin:/opt/mobile-verifier/etc/keypair.bin @@ -139,11 +127,7 @@ services: config: condition: service_started stop_grace_period: 1s - environment: - - AWS_ACCESS_KEY_ID=AWS_ACCESS_KEY_ID - - AWS_SECRET_ACCESS_KEY=AWS_SECRET_ACCESS_KEY - - AWS_SESSION_TOKEN=AWS_SESSION_TOKEN - - RUST_BACKTRACE=1 + env_file: .env-mobile volumes: - ./reward_index/settings.toml:/opt/reward-index/etc/settings.toml diff --git a/docker/mobile/verifier/settings.toml b/docker/mobile/verifier/settings.toml index 7f7d0dbb2..0f04cfdb8 100644 --- a/docker/mobile/verifier/settings.toml +++ b/docker/mobile/verifier/settings.toml @@ -3,6 +3,7 @@ cache = "/opt/mobile-verifier/data" rewards = "24 hours" reward_offset_minutes = "30 minutes" modeled_coverage_start = "2023-08-20 00:00:00.000000000 UTC" +# This needs to be created data_sets_directory = "/opt/mobile-verifier/data_sets_directory" usa_and_mexico_geofence_regions = "/opt/mobile-verifier/usa_and_mexico_geofence_regions" usa_geofence_regions = "/opt/mobile-verifier/usa_geofence_regions" @@ -35,7 +36,7 @@ endpoint = "http://localstack:4566" endpoint = "0.0.0.0:19000" [price_tracker] -price_duration_minutes = 10 +price_duration_minutes = 999999999 [price_tracker.file_store] bucket = "mobile-price" From 1e93f905613accba15415189f70a1fec729ed64f Mon Sep 17 00:00:00 2001 From: Macpie Date: Fri, 31 May 2024 12:41:35 -0700 Subject: [PATCH 32/54] Improve submit_speedtest --- test_mobile/tests/common/hotspot.rs | 26 ++++++++++++++++++-------- test_mobile/tests/integration_test.rs | 6 ++++-- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/test_mobile/tests/common/hotspot.rs b/test_mobile/tests/common/hotspot.rs index be6b298d3..8a4f824dc 100644 --- a/test_mobile/tests/common/hotspot.rs +++ b/test_mobile/tests/common/hotspot.rs @@ -13,6 +13,7 @@ use tonic::{metadata::MetadataValue, transport::Channel}; pub struct Hotspot { client: PocMobileClient, keypair: Keypair, + serial: String, } impl Hotspot { @@ -30,17 +31,26 @@ impl Hotspot { tracing::info!("hotspot {b58} connected to ingester"); - Self { client, keypair } + Self { + client, + keypair, + serial: b58, + } } - pub async fn submit_speedtest(mut self) -> Result<()> { + pub async fn submit_speedtest( + &mut self, + upload_speed: u64, + download_speed: u64, + latency: u32, + ) -> Result<()> { let mut speedtest_req = SpeedtestReqV1 { pub_key: self.keypair.public_key().into(), - serial: "hotspot1-serial".to_string(), + serial: self.serial.clone(), timestamp: now() as u64, - upload_speed: 100, - download_speed: 100, - latency: 25, + upload_speed, + download_speed, + latency, signature: vec![], }; @@ -56,9 +66,9 @@ impl Hotspot { .metadata_mut() .insert("authorization", metadata_value); - let _r = self.client.submit_speedtest(request).await?; + let res = self.client.submit_speedtest(request).await?; - tracing::debug!("submitted speedtest {:?}", speedtest_req); + tracing::debug!("submitted speedtest {:?}, {:?}", speedtest_req, res); Ok(()) } diff --git a/test_mobile/tests/integration_test.rs b/test_mobile/tests/integration_test.rs index 604a6a38e..184a44fdc 100644 --- a/test_mobile/tests/integration_test.rs +++ b/test_mobile/tests/integration_test.rs @@ -21,8 +21,10 @@ async fn main() -> Result<()> { Err(e) => panic!("docker::up failed: {:?}", e), } - let hotspot1 = Hotspot::new().await; - hotspot1.submit_speedtest().await?; + let mut hotspot1 = Hotspot::new().await; + + hotspot1.submit_speedtest(1001, 1001, 25).await?; + hotspot1.submit_speedtest(1002, 1002, 25).await?; let _ = tokio::time::sleep(Duration::from_secs(10)).await; From 08865498881009cc55ddfb12d148070753a97039 Mon Sep 17 00:00:00 2001 From: Macpie Date: Fri, 31 May 2024 13:09:40 -0700 Subject: [PATCH 33/54] Add set_metadata to wrap req with api token --- test_mobile/tests/common/hotspot.rs | 27 ++++++++++++++++++--------- test_mobile/tests/integration_test.rs | 2 +- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/test_mobile/tests/common/hotspot.rs b/test_mobile/tests/common/hotspot.rs index 8a4f824dc..77f414f69 100644 --- a/test_mobile/tests/common/hotspot.rs +++ b/test_mobile/tests/common/hotspot.rs @@ -8,16 +8,17 @@ use std::{ str::FromStr, time::{SystemTime, UNIX_EPOCH}, }; -use tonic::{metadata::MetadataValue, transport::Channel}; +use tonic::{metadata::MetadataValue, transport::Channel, Request}; pub struct Hotspot { client: PocMobileClient, + api_token: String, keypair: Keypair, serial: String, } impl Hotspot { - pub async fn new() -> Self { + pub async fn new(api_token: String) -> Self { let endpoint = "http://127.0.0.1:9080"; let client = (|| PocMobileClient::connect(endpoint)) @@ -33,6 +34,7 @@ impl Hotspot { Self { client, + api_token: format!("Bearer {api_token}"), keypair, serial: b58, } @@ -59,18 +61,25 @@ impl Hotspot { .sign(&speedtest_req.encode_to_vec()) .expect("sign"); - let mut request = tonic::Request::new(speedtest_req.clone()); + let request = self.set_metadata(speedtest_req.clone()); + tracing::debug!("submitting speedtest {:?}", speedtest_req); + + let res = self.client.submit_speedtest(request).await?; + tracing::debug!("submitted speedtest {:?}", res); + + Ok(()) + } + + pub fn set_metadata(&self, inner: T) -> Request { + let mut request = tonic::Request::new(inner); + let api_token = self.api_token.clone(); + let metadata_value = MetadataValue::from_str(api_token.as_str()).unwrap(); - let metadata_value = MetadataValue::from_str("Bearer api-token").unwrap(); request .metadata_mut() .insert("authorization", metadata_value); - let res = self.client.submit_speedtest(request).await?; - - tracing::debug!("submitted speedtest {:?}, {:?}", speedtest_req, res); - - Ok(()) + request } } diff --git a/test_mobile/tests/integration_test.rs b/test_mobile/tests/integration_test.rs index 184a44fdc..fb5f9563c 100644 --- a/test_mobile/tests/integration_test.rs +++ b/test_mobile/tests/integration_test.rs @@ -21,7 +21,7 @@ async fn main() -> Result<()> { Err(e) => panic!("docker::up failed: {:?}", e), } - let mut hotspot1 = Hotspot::new().await; + let mut hotspot1 = Hotspot::new("api-token".to_string()).await; hotspot1.submit_speedtest(1001, 1001, 25).await?; hotspot1.submit_speedtest(1002, 1002, 25).await?; From ce6dd98463bd17e2c2dd7cab849fe33006a2856e Mon Sep 17 00:00:00 2001 From: Macpie Date: Fri, 31 May 2024 13:20:44 -0700 Subject: [PATCH 34/54] Add basic coverage_object --- Cargo.lock | 1 + test_mobile/Cargo.toml | 1 + test_mobile/tests/common/hotspot.rs | 31 ++++++++++++++++++++++++++- test_mobile/tests/integration_test.rs | 2 ++ 4 files changed, 34 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 2bd5fc2e0..f8626e73d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7867,6 +7867,7 @@ dependencies = [ "tonic", "tracing", "tracing-subscriber", + "uuid", ] [[package]] diff --git a/test_mobile/Cargo.toml b/test_mobile/Cargo.toml index 4d0dade1b..1f44d8518 100644 --- a/test_mobile/Cargo.toml +++ b/test_mobile/Cargo.toml @@ -25,3 +25,4 @@ rand = { workspace = true } tonic = { workspace = true } tracing = { workspace = true } tracing-subscriber = { workspace = true } +uuid = { workspace = true } diff --git a/test_mobile/tests/common/hotspot.rs b/test_mobile/tests/common/hotspot.rs index 77f414f69..8efc0c7b5 100644 --- a/test_mobile/tests/common/hotspot.rs +++ b/test_mobile/tests/common/hotspot.rs @@ -1,7 +1,9 @@ use anyhow::Result; use backon::{ExponentialBuilder, Retryable}; use helium_crypto::{KeyTag, Keypair, Sign}; -use helium_proto::services::poc_mobile::{Client as PocMobileClient, SpeedtestReqV1}; +use helium_proto::services::poc_mobile::{ + Client as PocMobileClient, CoverageObjectReqV1, SpeedtestReqV1, +}; use prost::Message; use rand::rngs::OsRng; use std::{ @@ -9,6 +11,7 @@ use std::{ time::{SystemTime, UNIX_EPOCH}, }; use tonic::{metadata::MetadataValue, transport::Channel, Request}; +use uuid::Uuid; pub struct Hotspot { client: PocMobileClient, @@ -70,6 +73,32 @@ impl Hotspot { Ok(()) } + pub async fn submit_coverage_object(&mut self) -> Result<()> { + let mut coverage_object_req = CoverageObjectReqV1 { + pub_key: self.keypair.public_key().into(), + uuid: Uuid::new_v4().as_bytes().to_vec(), + coverage_claim_time: now() as u64, + coverage: vec![], + indoor: false, + trust_score: 1, + signature: vec![], + key_type: None, + }; + + coverage_object_req.signature = self + .keypair + .sign(&coverage_object_req.encode_to_vec()) + .expect("sign"); + + let request = self.set_metadata(coverage_object_req.clone()); + tracing::debug!("submitting coverage_object {:?}", coverage_object_req); + + let res = self.client.submit_coverage_object(request).await?; + tracing::debug!("submitted coverage_object {:?}", res); + + Ok(()) + } + pub fn set_metadata(&self, inner: T) -> Request { let mut request = tonic::Request::new(inner); let api_token = self.api_token.clone(); diff --git a/test_mobile/tests/integration_test.rs b/test_mobile/tests/integration_test.rs index fb5f9563c..e16950398 100644 --- a/test_mobile/tests/integration_test.rs +++ b/test_mobile/tests/integration_test.rs @@ -26,6 +26,8 @@ async fn main() -> Result<()> { hotspot1.submit_speedtest(1001, 1001, 25).await?; hotspot1.submit_speedtest(1002, 1002, 25).await?; + hotspot1.submit_coverage_object().await?; + let _ = tokio::time::sleep(Duration::from_secs(10)).await; Ok(()) From a978d991919e3016c4ba35775cf4d5e8999af862 Mon Sep 17 00:00:00 2001 From: Macpie Date: Mon, 3 Jun 2024 10:00:56 -0700 Subject: [PATCH 35/54] Add feature ingest/time (HONOR_TIMESTAMP) --- docker/mobile/.env-mobile | 5 +++- docker/mobile/Dockerfile | 2 +- ingest/Cargo.toml | 3 ++ ingest/src/server_mobile.rs | 42 ++++++++++++++++++++++----- test_mobile/tests/integration_test.rs | 14 +++++---- 5 files changed, 50 insertions(+), 16 deletions(-) diff --git a/docker/mobile/.env-mobile b/docker/mobile/.env-mobile index 844c15e3a..6eee6d514 100644 --- a/docker/mobile/.env-mobile +++ b/docker/mobile/.env-mobile @@ -1,4 +1,7 @@ +RUST_BACKTRACE=1 + AWS_ACCESS_KEY_ID=AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY=AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN=AWS_SESSION_TOKEN -RUST_BACKTRACE=1 + +HONOR_TIMESTAMP=0 diff --git a/docker/mobile/Dockerfile b/docker/mobile/Dockerfile index a6d75fd49..418d25105 100644 --- a/docker/mobile/Dockerfile +++ b/docker/mobile/Dockerfile @@ -40,7 +40,7 @@ RUN sed -i \ Cargo.toml # Build releases -RUN cargo build --release +RUN cargo build --features ingest/time --release # Package Runners FROM debian:bookworm-slim diff --git a/ingest/Cargo.toml b/ingest/Cargo.toml index b8df84ebe..fd9857c87 100644 --- a/ingest/Cargo.toml +++ b/ingest/Cargo.toml @@ -41,3 +41,6 @@ humantime-serde = { workspace = true } [dev-dependencies] backon = "0" + +[features] +time = [] diff --git a/ingest/src/server_mobile.rs b/ingest/src/server_mobile.rs index 06d57d5d0..e0b213dee 100644 --- a/ingest/src/server_mobile.rs +++ b/ingest/src/server_mobile.rs @@ -107,8 +107,8 @@ impl poc_mobile::PocMobile for GrpcServer { &self, request: Request, ) -> GrpcResult { - let timestamp: u64 = Utc::now().timestamp_millis() as u64; let event = request.into_inner(); + let timestamp = maybe_honor_timestamp(event.timestamp); custom_tracing::record_b58("pub_key", &event.pub_key); @@ -131,8 +131,8 @@ impl poc_mobile::PocMobile for GrpcServer { &self, request: Request, ) -> GrpcResult { - let timestamp: u64 = Utc::now().timestamp_millis() as u64; let event = request.into_inner(); + let timestamp = maybe_honor_timestamp(event.timestamp); custom_tracing::record_b58("pub_key", &event.pub_key); @@ -155,8 +155,8 @@ impl poc_mobile::PocMobile for GrpcServer { &self, request: Request, ) -> GrpcResult { - let timestamp: u64 = Utc::now().timestamp_millis() as u64; let event = request.into_inner(); + let timestamp = maybe_honor_timestamp(event.timestamp); custom_tracing::record_b58("pub_key", &event.pub_key); @@ -179,8 +179,8 @@ impl poc_mobile::PocMobile for GrpcServer { &self, request: Request, ) -> GrpcResult { - let timestamp = Utc::now().timestamp_millis() as u64; let event = request.into_inner(); + let timestamp = maybe_honor_timestamp(Utc::now().timestamp_millis() as u64); custom_tracing::record_b58("pub_key", &event.pub_key); @@ -204,8 +204,8 @@ impl poc_mobile::PocMobile for GrpcServer { &self, request: Request, ) -> GrpcResult { - let timestamp = Utc::now().timestamp_millis() as u64; let event = request.into_inner(); + let timestamp = maybe_honor_timestamp(event.timestamp); let subscriber_id = event.subscriber_id.clone(); let timestamp_millis = event.timestamp; @@ -243,8 +243,8 @@ impl poc_mobile::PocMobile for GrpcServer { &self, request: Request, ) -> GrpcResult { - let timestamp = Utc::now().timestamp_millis() as u64; let event = request.into_inner(); + let timestamp = maybe_honor_timestamp(Utc::now().timestamp_millis() as u64); let hotspot_pubkey = event.hotspot_pubkey.clone(); let cbsd_id = event.cbsd_id.clone(); let threshold_timestamp = event.threshold_timestamp; @@ -279,8 +279,8 @@ impl poc_mobile::PocMobile for GrpcServer { &self, request: Request, ) -> GrpcResult { - let timestamp = Utc::now().timestamp_millis() as u64; let event = request.into_inner(); + let timestamp = maybe_honor_timestamp(event.timestamp); let hotspot_pubkey = event.hotspot_pubkey.clone(); let cbsd_id = event.cbsd_id.clone(); let invalidated_timestamp = event.timestamp; @@ -318,8 +318,8 @@ impl poc_mobile::PocMobile for GrpcServer { &self, request: Request, ) -> GrpcResult { - let timestamp: u64 = Utc::now().timestamp_millis() as u64; let event = request.into_inner(); + let timestamp = maybe_honor_timestamp(Utc::now().timestamp_millis() as u64); custom_tracing::record_b58("pub_key", &event.pub_key); @@ -482,3 +482,29 @@ pub async fn grpc_server(settings: &Settings) -> Result<()> { .start() .await } + +/// Returns a timestamp based on certain conditions. +/// +/// If the `time` feature is enabled and the `HONOR_TIMESTAMP` environment variable is set, +/// the function will use the value of `HONOR_TIMESTAMP`. If `HONOR_TIMESTAMP` is "0", +/// it returns the input `timestamp`. Otherwise, it attempts to parse and return the value of `HONOR_TIMESTAMP`. +/// If parsing fails, it returns the input `timestamp`. +/// +/// If the `time` feature is not enabled or `HONOR_TIMESTAMP` is not set, +/// it returns the current time in milliseconds since the Unix epoch. +/// +fn maybe_honor_timestamp(timestamp: u64) -> u64 { + if cfg!(feature = "time") && std::env::var("HONOR_TIMESTAMP").is_ok() { + let str = std::env::var("HONOR_TIMESTAMP").unwrap(); + tracing::debug!("using HONOR_TIMESTAMP={}", str); + match str.as_str() { + "0" => timestamp, + timestamp_str => match timestamp_str.parse::() { + Ok(t) => t, + Err(_e) => timestamp, + }, + } + } else { + Utc::now().timestamp_millis() as u64 + } +} diff --git a/test_mobile/tests/integration_test.rs b/test_mobile/tests/integration_test.rs index e16950398..29e8348c3 100644 --- a/test_mobile/tests/integration_test.rs +++ b/test_mobile/tests/integration_test.rs @@ -12,13 +12,15 @@ async fn main() -> Result<()> { ) .await?; - let docker = Docker::new(); - - match docker.up() { - Ok(_) => { - tracing::info!("docker compose started") + if std::env::var("DOCKER").is_ok() { + let docker = Docker::new(); + + match docker.up() { + Ok(_) => { + tracing::info!("docker compose started") + } + Err(e) => panic!("docker::up failed: {:?}", e), } - Err(e) => panic!("docker::up failed: {:?}", e), } let mut hotspot1 = Hotspot::new("api-token".to_string()).await; From 50ec7e4a2160eaf1639d908388326b63e1c1f576 Mon Sep 17 00:00:00 2001 From: Macpie Date: Mon, 3 Jun 2024 10:36:02 -0700 Subject: [PATCH 36/54] Fix directories --- .gitignore | 2 ++ docker/mobile/docker-compose.yml | 1 + docker/mobile/verifier/settings.toml | 4 ++-- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index b78f821af..2b56c2871 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,5 @@ flamegraph.* !/minio/bucket-policy.json *.bak + +docker/mobile/verifier/data_sets_directory/ diff --git a/docker/mobile/docker-compose.yml b/docker/mobile/docker-compose.yml index f6bd83215..c19b1e733 100644 --- a/docker/mobile/docker-compose.yml +++ b/docker/mobile/docker-compose.yml @@ -114,6 +114,7 @@ services: - ./verifier/usa_and_mexico_geofence_regions/mexico.txt:/opt/mobile-verifier/usa_and_mexico_geofence_regions/mexico.txt - ./verifier/usa_and_mexico_geofence_regions/us-territories.txt:/opt/mobile-verifier/usa_and_mexico_geofence_regions/us-territories.txt - ./verifier/usa_geofence_regions/us-territories.txt:/opt/mobile-verifier/usa_geofence_regions/us-territories.txt + - ./verifier/data_sets_directory:/opt/mobile-verifier/data_sets_directory reward_index: build: diff --git a/docker/mobile/verifier/settings.toml b/docker/mobile/verifier/settings.toml index 0f04cfdb8..cb26b16c5 100644 --- a/docker/mobile/verifier/settings.toml +++ b/docker/mobile/verifier/settings.toml @@ -1,7 +1,7 @@ -log = "mobile-verifier=debug,file_store=info,custom_tracing=info" +log = "mobile_verifier=debug,file_store=info,custom_tracing=info" cache = "/opt/mobile-verifier/data" rewards = "24 hours" -reward_offset_minutes = "30 minutes" +reward_period_offset = "30 seconds" modeled_coverage_start = "2023-08-20 00:00:00.000000000 UTC" # This needs to be created data_sets_directory = "/opt/mobile-verifier/data_sets_directory" From d569c3c359f5361250ce1e4764903bbb43145379 Mon Sep 17 00:00:00 2001 From: Macpie Date: Mon, 3 Jun 2024 12:48:37 -0700 Subject: [PATCH 37/54] manipulate req times --- Cargo.lock | 2 + test_mobile/Cargo.toml | 2 + test_mobile/src/cli/assignment.rs | 64 ++++++++++------ test_mobile/tests/common/hotspot.rs | 102 +++++++++++++++++++------- test_mobile/tests/common/mod.rs | 33 +++++++++ test_mobile/tests/integration_test.rs | 10 ++- 6 files changed, 165 insertions(+), 48 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f8626e73d..21af9b2eb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7855,9 +7855,11 @@ dependencies = [ "async-compression", "backon", "bs58 0.4.0", + "chrono", "clap 4.4.8", "custom-tracing", "file-store", + "h3o", "helium-crypto", "helium-proto", "hextree", diff --git a/test_mobile/Cargo.toml b/test_mobile/Cargo.toml index 1f44d8518..d7aaa8bfb 100644 --- a/test_mobile/Cargo.toml +++ b/test_mobile/Cargo.toml @@ -11,6 +11,7 @@ anyhow = { workspace = true } async-compression = { version = "0", features = ["tokio", "gzip"] } clap = { workspace = true } file-store = { path = "../file_store" } +h3o = { workspace = true, features = ["geo"] } helium-proto = { workspace = true } hextree = { workspace = true } tokio = { workspace = true, features = ["io-util", "fs"] } @@ -19,6 +20,7 @@ tokio = { workspace = true, features = ["io-util", "fs"] } backon = "0" bs58 = { workspace = true } custom-tracing = { path = "../custom_tracing" } +chrono = { workspace = true } helium-crypto = { workspace = true } prost = { workspace = true } rand = { workspace = true } diff --git a/test_mobile/src/cli/assignment.rs b/test_mobile/src/cli/assignment.rs index 66154b710..031259b90 100644 --- a/test_mobile/src/cli/assignment.rs +++ b/test_mobile/src/cli/assignment.rs @@ -7,33 +7,55 @@ use anyhow::Result; use hextree::{Cell, HexTreeMap}; use tokio::{fs::File, io::AsyncWriteExt}; +pub const CENTER_CELL: u64 = 0x8a5d107916dffff; + +pub const INNER_1_CELL: u64 = 0x8a5d107916c7fff; +pub const INNER_2_CELL: u64 = 0x8a5d107916cffff; +pub const INNER_3_CELL: u64 = 0x8a5d1079ed67fff; +pub const INNER_4_CELL: u64 = 0x8a5d1079ed77fff; +pub const INNER_5_CELL: u64 = 0x8a5d1079ed2ffff; +pub const INNER_6_CELL: u64 = 0x8a5d107916d7fff; + +pub const OUTER_1_CELL: u64 = 0x8a5d107916e7fff; +pub const OUTER_2_CELL: u64 = 0x8a5d107916effff; +pub const OUTER_3_CELL: u64 = 0x8a5d1079e9b7fff; +pub const OUTER_4_CELL: u64 = 0x8a5d1079e997fff; +pub const OUTER_5_CELL: u64 = 0x8a5d1079ed6ffff; +pub const OUTER_6_CELL: u64 = 0x8a5d1079ed47fff; +pub const OUTER_7_CELL: u64 = 0x8a5d1079ed57fff; +pub const OUTER_8_CELL: u64 = 0x8a5d1079ed0ffff; +pub const OUTER_9_CELL: u64 = 0x8a5d1079ed07fff; +pub const OUTER_10_CELL: u64 = 0x8a5d1079ed27fff; +pub const OUTER_11_CELL: u64 = 0x8a5d1079168ffff; +pub const OUTER_12_CELL: u64 = 0x8a5d107916f7fff; + /// Generate footfall, landtype and urbanization #[derive(Debug, clap::Args)] pub struct Cmd {} impl Cmd { pub async fn run(self) -> Result<()> { - let center_cell = Cell::from_raw(0x8a5d107916dffff)?; - - let inner_1_cell = Cell::from_raw(0x8a5d107916c7fff)?; - let inner_2_cell = Cell::from_raw(0x8a5d107916cffff)?; - let inner_3_cell = Cell::from_raw(0x8a5d1079ed67fff)?; - let inner_4_cell = Cell::from_raw(0x8a5d1079ed77fff)?; - let inner_5_cell = Cell::from_raw(0x8a5d1079ed2ffff)?; - let inner_6_cell = Cell::from_raw(0x8a5d107916d7fff)?; - - let outer_1_cell = Cell::from_raw(0x8a5d107916e7fff)?; - let outer_2_cell = Cell::from_raw(0x8a5d107916effff)?; - let outer_3_cell = Cell::from_raw(0x8a5d1079e9b7fff)?; - let outer_4_cell = Cell::from_raw(0x8a5d1079e997fff)?; - let outer_5_cell = Cell::from_raw(0x8a5d1079ed6ffff)?; - let outer_6_cell = Cell::from_raw(0x8a5d1079ed47fff)?; - let outer_7_cell = Cell::from_raw(0x8a5d1079ed57fff)?; - let outer_8_cell = Cell::from_raw(0x8a5d1079ed0ffff)?; - let outer_9_cell = Cell::from_raw(0x8a5d1079ed07fff)?; - let outer_10_cell = Cell::from_raw(0x8a5d1079ed27fff)?; - let outer_11_cell = Cell::from_raw(0x8a5d1079168ffff)?; - let outer_12_cell = Cell::from_raw(0x8a5d107916f7fff)?; + let center_cell = Cell::from_raw(CENTER_CELL)?; + + let inner_1_cell = Cell::from_raw(INNER_1_CELL)?; + let inner_2_cell = Cell::from_raw(INNER_2_CELL)?; + let inner_3_cell = Cell::from_raw(INNER_3_CELL)?; + let inner_4_cell = Cell::from_raw(INNER_4_CELL)?; + let inner_5_cell = Cell::from_raw(INNER_5_CELL)?; + let inner_6_cell = Cell::from_raw(INNER_6_CELL)?; + + let outer_1_cell = Cell::from_raw(OUTER_1_CELL)?; + let outer_2_cell = Cell::from_raw(OUTER_2_CELL)?; + let outer_3_cell = Cell::from_raw(OUTER_3_CELL)?; + let outer_4_cell = Cell::from_raw(OUTER_4_CELL)?; + let outer_5_cell = Cell::from_raw(OUTER_5_CELL)?; + let outer_6_cell = Cell::from_raw(OUTER_6_CELL)?; + let outer_7_cell = Cell::from_raw(OUTER_7_CELL)?; + let outer_8_cell = Cell::from_raw(OUTER_8_CELL)?; + let outer_9_cell = Cell::from_raw(OUTER_9_CELL)?; + let outer_10_cell = Cell::from_raw(OUTER_10_CELL)?; + let outer_11_cell = Cell::from_raw(OUTER_11_CELL)?; + let outer_12_cell = Cell::from_raw(OUTER_12_CELL)?; // Footfall Data // POI - footfalls > 1 for a POI across hexes diff --git a/test_mobile/tests/common/hotspot.rs b/test_mobile/tests/common/hotspot.rs index 8efc0c7b5..0cae0678f 100644 --- a/test_mobile/tests/common/hotspot.rs +++ b/test_mobile/tests/common/hotspot.rs @@ -2,17 +2,18 @@ use anyhow::Result; use backon::{ExponentialBuilder, Retryable}; use helium_crypto::{KeyTag, Keypair, Sign}; use helium_proto::services::poc_mobile::{ - Client as PocMobileClient, CoverageObjectReqV1, SpeedtestReqV1, + Client as PocMobileClient, CoverageObjectReqV1, RadioHexSignalLevel, SpeedtestReqV1, + WifiHeartbeatReqV1, }; use prost::Message; use rand::rngs::OsRng; -use std::{ - str::FromStr, - time::{SystemTime, UNIX_EPOCH}, -}; +use std::str::FromStr; +use test_mobile::cli::assignment::CENTER_CELL; use tonic::{metadata::MetadataValue, transport::Channel, Request}; use uuid::Uuid; +use crate::common::{hours_ago, keypair_to_bs58, now, TimestampToDateTime}; + pub struct Hotspot { client: PocMobileClient, api_token: String, @@ -49,10 +50,12 @@ impl Hotspot { download_speed: u64, latency: u32, ) -> Result<()> { + let timestamp = now(); + let mut speedtest_req = SpeedtestReqV1 { pub_key: self.keypair.public_key().into(), serial: self.serial.clone(), - timestamp: now() as u64, + timestamp, upload_speed, download_speed, latency, @@ -65,20 +68,36 @@ impl Hotspot { .expect("sign"); let request = self.set_metadata(speedtest_req.clone()); - tracing::debug!("submitting speedtest {:?}", speedtest_req); + tracing::debug!( + "submitting speedtest @ {} = {:?}", + timestamp.to_datetime(), + speedtest_req + ); let res = self.client.submit_speedtest(request).await?; - tracing::debug!("submitted speedtest {:?}", res); + tracing::debug!( + "submitted speedtest @ {} = {:?}", + timestamp.to_datetime(), + res + ); Ok(()) } - pub async fn submit_coverage_object(&mut self) -> Result<()> { + pub async fn submit_coverage_object(&mut self, uuid: Uuid) -> Result<()> { + let location = h3o::CellIndex::try_from(CENTER_CELL).unwrap(); + + let coverage_claim_time = now() - hours_ago(24); + let mut coverage_object_req = CoverageObjectReqV1 { pub_key: self.keypair.public_key().into(), - uuid: Uuid::new_v4().as_bytes().to_vec(), - coverage_claim_time: now() as u64, - coverage: vec![], + uuid: uuid.as_bytes().to_vec(), + coverage_claim_time, + coverage: vec![RadioHexSignalLevel { + location: location.to_string(), + signal_level: 3, + signal_power: 1000, + }], indoor: false, trust_score: 1, signature: vec![], @@ -91,10 +110,54 @@ impl Hotspot { .expect("sign"); let request = self.set_metadata(coverage_object_req.clone()); - tracing::debug!("submitting coverage_object {:?}", coverage_object_req); + tracing::debug!( + "submitting coverage_object @ {} = {:?}", + coverage_claim_time.to_datetime(), + coverage_object_req + ); let res = self.client.submit_coverage_object(request).await?; - tracing::debug!("submitted coverage_object {:?}", res); + tracing::debug!( + "submitted coverage_object @ {} = {:?}", + coverage_claim_time.to_datetime(), + res + ); + + Ok(()) + } + + pub async fn submit_wifi_heartbeat(&mut self, when: u64, coverage_object: Uuid) -> Result<()> { + let timestamp = now() - when; + + let mut wifi_heartbeat_req = WifiHeartbeatReqV1 { + pub_key: self.keypair.public_key().into(), + timestamp, + lat: 19.642310, + lon: -155.990626, + location_validation_timestamp: timestamp, + operation_mode: true, + coverage_object: coverage_object.as_bytes().to_vec(), + signature: vec![], + }; + + wifi_heartbeat_req.signature = self + .keypair + .sign(&wifi_heartbeat_req.encode_to_vec()) + .expect("sign"); + + let request = self.set_metadata(wifi_heartbeat_req.clone()); + tracing::debug!( + "submitting wifi_heartbeat @ {} = {:?}", + timestamp.to_datetime(), + wifi_heartbeat_req + ); + + let res = self.client.submit_wifi_heartbeat(request).await?; + tracing::debug!( + "submitted wifi_heartbeat @ {} = {:?}", + timestamp.to_datetime(), + res + ); Ok(()) } @@ -111,14 +174,3 @@ impl Hotspot { request } } - -fn now() -> u64 { - SystemTime::now() - .duration_since(UNIX_EPOCH) - .unwrap() - .as_millis() as u64 -} - -fn keypair_to_bs58(keypair: &Keypair) -> String { - bs58::encode(keypair.public_key().to_vec()).into_string() -} diff --git a/test_mobile/tests/common/mod.rs b/test_mobile/tests/common/mod.rs index ef044b112..12d03c7db 100644 --- a/test_mobile/tests/common/mod.rs +++ b/test_mobile/tests/common/mod.rs @@ -1,2 +1,35 @@ +use std::time::{SystemTime, UNIX_EPOCH}; + +use chrono::{DateTime, NaiveDateTime, TimeZone, Utc}; +use helium_crypto::Keypair; + pub mod docker; pub mod hotspot; + +trait TimestampToDateTime { + fn to_datetime(&self) -> DateTime; +} +impl TimestampToDateTime for u64 { + fn to_datetime(&self) -> DateTime { + // Convert the u64 timestamp in milliseconds to NaiveDateTime + let naive = NaiveDateTime::from_timestamp_millis(*self as i64).expect("Invalid timestamp"); + + // Convert NaiveDateTime to DateTime using Utc timestamp + Utc.from_utc_datetime(&naive) + } +} + +pub fn now() -> u64 { + SystemTime::now() + .duration_since(UNIX_EPOCH) + .unwrap() + .as_millis() as u64 +} + +pub fn keypair_to_bs58(keypair: &Keypair) -> String { + bs58::encode(keypair.public_key().to_vec()).into_string() +} + +pub fn hours_ago(hours: i64) -> u64 { + chrono::Duration::hours(hours).num_milliseconds() as u64 +} diff --git a/test_mobile/tests/integration_test.rs b/test_mobile/tests/integration_test.rs index 29e8348c3..d6c00625e 100644 --- a/test_mobile/tests/integration_test.rs +++ b/test_mobile/tests/integration_test.rs @@ -1,6 +1,7 @@ use anyhow::Result; -use common::{docker::Docker, hotspot::Hotspot}; +use common::{docker::Docker, hotspot::Hotspot, hours_ago}; use std::time::Duration; +use uuid::Uuid; mod common; @@ -24,11 +25,16 @@ async fn main() -> Result<()> { } let mut hotspot1 = Hotspot::new("api-token".to_string()).await; + let co_uuid = Uuid::new_v4(); + + hotspot1.submit_coverage_object(co_uuid).await?; hotspot1.submit_speedtest(1001, 1001, 25).await?; hotspot1.submit_speedtest(1002, 1002, 25).await?; - hotspot1.submit_coverage_object().await?; + hotspot1 + .submit_wifi_heartbeat(hours_ago(12), co_uuid) + .await?; let _ = tokio::time::sleep(Duration::from_secs(10)).await; From c796ae6ead91cd77ab0ab810869594a639351560 Mon Sep 17 00:00:00 2001 From: Macpie Date: Mon, 3 Jun 2024 13:03:00 -0700 Subject: [PATCH 38/54] Send 12 wifi heartbeat --- ingest/src/server_mobile.rs | 2 +- test_mobile/tests/integration_test.rs | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/ingest/src/server_mobile.rs b/ingest/src/server_mobile.rs index e0b213dee..cb4a0213d 100644 --- a/ingest/src/server_mobile.rs +++ b/ingest/src/server_mobile.rs @@ -496,7 +496,7 @@ pub async fn grpc_server(settings: &Settings) -> Result<()> { fn maybe_honor_timestamp(timestamp: u64) -> u64 { if cfg!(feature = "time") && std::env::var("HONOR_TIMESTAMP").is_ok() { let str = std::env::var("HONOR_TIMESTAMP").unwrap(); - tracing::debug!("using HONOR_TIMESTAMP={}", str); + tracing::debug!("using HONOR_TIMESTAMP={str} and timestamp={timestamp}"); match str.as_str() { "0" => timestamp, timestamp_str => match timestamp_str.parse::() { diff --git a/test_mobile/tests/integration_test.rs b/test_mobile/tests/integration_test.rs index d6c00625e..1ab96d752 100644 --- a/test_mobile/tests/integration_test.rs +++ b/test_mobile/tests/integration_test.rs @@ -1,6 +1,5 @@ use anyhow::Result; use common::{docker::Docker, hotspot::Hotspot, hours_ago}; -use std::time::Duration; use uuid::Uuid; mod common; @@ -32,11 +31,11 @@ async fn main() -> Result<()> { hotspot1.submit_speedtest(1001, 1001, 25).await?; hotspot1.submit_speedtest(1002, 1002, 25).await?; - hotspot1 - .submit_wifi_heartbeat(hours_ago(12), co_uuid) - .await?; - - let _ = tokio::time::sleep(Duration::from_secs(10)).await; + for x in (1..=12).rev() { + hotspot1 + .submit_wifi_heartbeat(hours_ago(x), co_uuid) + .await?; + } Ok(()) } From b13d90edaed73ae65c5a3c05849858cdc79a40a9 Mon Sep 17 00:00:00 2001 From: Macpie Date: Mon, 3 Jun 2024 15:45:44 -0700 Subject: [PATCH 39/54] Update Roll Time --- docker/mobile/Dockerfile | 1 + docker/mobile/ingest/settings.toml | 1 + 2 files changed, 2 insertions(+) diff --git a/docker/mobile/Dockerfile b/docker/mobile/Dockerfile index 418d25105..a833aa6b9 100644 --- a/docker/mobile/Dockerfile +++ b/docker/mobile/Dockerfile @@ -12,6 +12,7 @@ RUN apt-get update && apt-get install -y \ COPY custom_tracing custom_tracing/ COPY db_store db_store/ COPY file_store file_store/ +COPY hex_assignments hex_assignments/ COPY metrics metrics/ COPY price price/ COPY reward_scheduler reward_scheduler/ diff --git a/docker/mobile/ingest/settings.toml b/docker/mobile/ingest/settings.toml index ba7c88de6..ca929240a 100644 --- a/docker/mobile/ingest/settings.toml +++ b/docker/mobile/ingest/settings.toml @@ -5,6 +5,7 @@ cache = "/opt/ingest/data" network = "mainnet" session_key_timeout = "30 minutes" token = "api-token" +roll_time = "30 seconds" [output] bucket = "mobile-ingest" From 504a16d94ed0fd6abf95bb9a085d652a29cc3b99 Mon Sep 17 00:00:00 2001 From: Macpie Date: Tue, 4 Jun 2024 11:29:50 -0700 Subject: [PATCH 40/54] remove data from data_sets_directory --- .gitignore | 2 +- .../footfall.1717436047000.res10.h3tree | Bin 807 -> 0 bytes .../landtype.1717436047000.res10.h3tree | Bin 807 -> 0 bytes 3 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 docker/mobile/verifier/data_sets_directory/footfall.1717436047000.res10.h3tree delete mode 100644 docker/mobile/verifier/data_sets_directory/landtype.1717436047000.res10.h3tree diff --git a/.gitignore b/.gitignore index 2b56c2871..e29cb2f43 100644 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,4 @@ flamegraph.* !/minio/bucket-policy.json *.bak -docker/mobile/verifier/data_sets_directory/ +docker/mobile/verifier/data_sets_directory/* diff --git a/docker/mobile/verifier/data_sets_directory/footfall.1717436047000.res10.h3tree b/docker/mobile/verifier/data_sets_directory/footfall.1717436047000.res10.h3tree deleted file mode 100644 index 0238baadc98c3d3f24274b498d5752916bed4e63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 807 zcmc~uttcrr$NM75OE$vIBG#5gCoO%>mZQ}k3i&i5OLrIh&=KcM1BPk kjzGA9i5bY^0uc*1K%}GAM|lvf2qKh0geq7VWHt~30A)2KvH$=8 diff --git a/docker/mobile/verifier/data_sets_directory/landtype.1717436047000.res10.h3tree b/docker/mobile/verifier/data_sets_directory/landtype.1717436047000.res10.h3tree deleted file mode 100644 index c6267c6d1007b37cbc8b6cc6080c5c59d9373f7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 807 zcmc~uttcrr$NM75OE$vIC6oZk)w^H&4KG6kqeJN8T)12F)C^(A5e From 220bfebdbbfc21700804997d51ad44a6d1913132 Mon Sep 17 00:00:00 2001 From: Macpie Date: Tue, 4 Jun 2024 13:52:23 -0700 Subject: [PATCH 41/54] Attempt to inset data into metadata --- Cargo.lock | 3 + .../mobile_metadata-key_to_assets.sql | 15 ++ .../mobile_metadata-mobile_hotspot_infos.sql | 18 ++ test_mobile/Cargo.toml | 3 + test_mobile/tests/common/docker.rs | 2 +- test_mobile/tests/common/hotspot.rs | 161 +++++++++++++++--- test_mobile/tests/common/mod.rs | 5 - test_mobile/tests/integration_test.rs | 5 +- 8 files changed, 182 insertions(+), 30 deletions(-) create mode 100644 docker/mobile/postgres_seeder/post_migration/mobile_metadata-key_to_assets.sql create mode 100644 docker/mobile/postgres_seeder/post_migration/mobile_metadata-mobile_hotspot_infos.sql diff --git a/Cargo.lock b/Cargo.lock index 21af9b2eb..1ac48da71 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7865,6 +7865,9 @@ dependencies = [ "hextree", "prost", "rand 0.8.5", + "serde", + "serde_json", + "sqlx", "tokio", "tonic", "tracing", diff --git a/docker/mobile/postgres_seeder/post_migration/mobile_metadata-key_to_assets.sql b/docker/mobile/postgres_seeder/post_migration/mobile_metadata-key_to_assets.sql new file mode 100644 index 000000000..2a9812f0a --- /dev/null +++ b/docker/mobile/postgres_seeder/post_migration/mobile_metadata-key_to_assets.sql @@ -0,0 +1,15 @@ +CREATE TABLE IF NOT EXISTS public.key_to_assets ( + address character varying(255) NOT NULL, + dao character varying(255) NULL, + asset character varying(255) NULL, + entity_key bytea NULL, + bump_seed integer NULL, + refreshed_at timestamp with time zone NULL, + created_at timestamp with time zone NOT NULL, + key_serialization jsonb NULL +); + +ALTER TABLE + public.key_to_assets +ADD + CONSTRAINT key_to_assets_pkey PRIMARY KEY (address) \ No newline at end of file diff --git a/docker/mobile/postgres_seeder/post_migration/mobile_metadata-mobile_hotspot_infos.sql b/docker/mobile/postgres_seeder/post_migration/mobile_metadata-mobile_hotspot_infos.sql new file mode 100644 index 000000000..057df5533 --- /dev/null +++ b/docker/mobile/postgres_seeder/post_migration/mobile_metadata-mobile_hotspot_infos.sql @@ -0,0 +1,18 @@ +CREATE TABLE IF NOT EXISTS public.mobile_hotspot_infos ( + address character varying(255) NOT NULL, + asset character varying(255) NULL, + bump_seed integer NULL, + location numeric NULL, + is_full_hotspot boolean NULL, + num_location_asserts integer NULL, + refreshed_at timestamp with time zone NULL, + created_at timestamp with time zone NOT NULL, + is_active boolean NULL, + dc_onboarding_fee_paid numeric NULL, + device_type jsonb NOT NULL +); + +ALTER TABLE + public.mobile_hotspot_infos +ADD + CONSTRAINT mobile_hotspot_infos_pkey PRIMARY KEY (address) \ No newline at end of file diff --git a/test_mobile/Cargo.toml b/test_mobile/Cargo.toml index d7aaa8bfb..931524a09 100644 --- a/test_mobile/Cargo.toml +++ b/test_mobile/Cargo.toml @@ -24,6 +24,9 @@ chrono = { workspace = true } helium-crypto = { workspace = true } prost = { workspace = true } rand = { workspace = true } +serde = { workspace = true } +serde_json = { workspace = true } +sqlx = { workspace = true } tonic = { workspace = true } tracing = { workspace = true } tracing-subscriber = { workspace = true } diff --git a/test_mobile/tests/common/docker.rs b/test_mobile/tests/common/docker.rs index a5808627b..f8e3b4c23 100644 --- a/test_mobile/tests/common/docker.rs +++ b/test_mobile/tests/common/docker.rs @@ -45,7 +45,7 @@ impl Docker { impl Drop for Docker { fn drop(&mut self) { // This code runs when the scope exits, including if the test fails. - tracing::info!("Test finished. Performing cleanup."); + tracing::debug!("Docker dropped"); match self.stop() { Ok(_) => tracing::info!("docker stack stopped"), Err(e) => tracing::error!("docker compose stopped failed: {:?}", e), diff --git a/test_mobile/tests/common/hotspot.rs b/test_mobile/tests/common/hotspot.rs index 0cae0678f..a03f43906 100644 --- a/test_mobile/tests/common/hotspot.rs +++ b/test_mobile/tests/common/hotspot.rs @@ -1,28 +1,50 @@ use anyhow::Result; use backon::{ExponentialBuilder, Retryable}; -use helium_crypto::{KeyTag, Keypair, Sign}; -use helium_proto::services::poc_mobile::{ - Client as PocMobileClient, CoverageObjectReqV1, RadioHexSignalLevel, SpeedtestReqV1, - WifiHeartbeatReqV1, +use chrono::Utc; +use h3o::CellIndex; +use helium_crypto::{KeyTag, Keypair, PublicKey, PublicKeyBinary, Sign}; +use helium_proto::services::{ + mobile_config::DeviceType, + poc_mobile::{ + Client as PocMobileClient, CoverageObjectReqV1, RadioHexSignalLevel, SpeedtestReqV1, + WifiHeartbeatReqV1, + }, }; use prost::Message; use rand::rngs::OsRng; +use sqlx::postgres::PgPoolOptions; use std::str::FromStr; -use test_mobile::cli::assignment::CENTER_CELL; use tonic::{metadata::MetadataValue, transport::Channel, Request}; use uuid::Uuid; -use crate::common::{hours_ago, keypair_to_bs58, now, TimestampToDateTime}; +use crate::common::{hours_ago, now, TimestampToDateTime}; pub struct Hotspot { - client: PocMobileClient, + mobile_client: PocMobileClient, api_token: String, keypair: Keypair, + wallet: Keypair, serial: String, + location: CellIndex, +} + +#[test] +fn it_works() { + let keypair = Keypair::generate(KeyTag::default(), &mut OsRng); + let x: Vec = keypair.public_key().into(); + println!("{:?}", keypair); + println!("{:?}", x); + println!("{:?}", keypair.public_key().to_vec()); + println!("{:?}", bs58::encode(x.clone()).into_string()); + println!( + "{:?}", + PublicKey::from_bytes(x.clone()).unwrap().to_string() + ); + println!("{:?}", PublicKeyBinary::from(x).to_string()); } impl Hotspot { - pub async fn new(api_token: String) -> Self { + pub async fn new(api_token: String, index: u64) -> Result { let endpoint = "http://127.0.0.1:9080"; let client = (|| PocMobileClient::connect(endpoint)) @@ -31,17 +53,26 @@ impl Hotspot { .expect("client connect"); let keypair = Keypair::generate(KeyTag::default(), &mut OsRng); + let wallet = Keypair::generate(KeyTag::default(), &mut OsRng); - let b58 = keypair_to_bs58(&keypair); + let b58 = keypair.public_key().to_string(); tracing::info!("hotspot {b58} connected to ingester"); - Self { - client, + let location = h3o::CellIndex::try_from(index).unwrap(); + + let result = populate_mobile_metadata(&keypair, &wallet, location).await?; + + tracing::info!("{:?}", result); + + Ok(Self { + mobile_client: client, api_token: format!("Bearer {api_token}"), keypair, + wallet, serial: b58, - } + location, + }) } pub async fn submit_speedtest( @@ -53,7 +84,7 @@ impl Hotspot { let timestamp = now(); let mut speedtest_req = SpeedtestReqV1 { - pub_key: self.keypair.public_key().into(), + pub_key: self.keypair.public_key().to_vec(), serial: self.serial.clone(), timestamp, upload_speed, @@ -74,7 +105,7 @@ impl Hotspot { speedtest_req ); - let res = self.client.submit_speedtest(request).await?; + let res = self.mobile_client.submit_speedtest(request).await?; tracing::debug!( "submitted speedtest @ {} = {:?}", timestamp.to_datetime(), @@ -85,16 +116,14 @@ impl Hotspot { } pub async fn submit_coverage_object(&mut self, uuid: Uuid) -> Result<()> { - let location = h3o::CellIndex::try_from(CENTER_CELL).unwrap(); - let coverage_claim_time = now() - hours_ago(24); let mut coverage_object_req = CoverageObjectReqV1 { - pub_key: self.keypair.public_key().into(), + pub_key: self.keypair.public_key().to_vec(), uuid: uuid.as_bytes().to_vec(), coverage_claim_time, coverage: vec![RadioHexSignalLevel { - location: location.to_string(), + location: self.location.to_string(), signal_level: 3, signal_power: 1000, }], @@ -116,7 +145,7 @@ impl Hotspot { coverage_object_req ); - let res = self.client.submit_coverage_object(request).await?; + let res = self.mobile_client.submit_coverage_object(request).await?; tracing::debug!( "submitted coverage_object @ {} = {:?}", coverage_claim_time.to_datetime(), @@ -129,11 +158,20 @@ impl Hotspot { pub async fn submit_wifi_heartbeat(&mut self, when: u64, coverage_object: Uuid) -> Result<()> { let timestamp = now() - when; + let center_loc = self + .location + .center_child(h3o::Resolution::Thirteen) + .expect("center child"); + + let lat_lon = h3o::LatLng::from(center_loc); + let mut wifi_heartbeat_req = WifiHeartbeatReqV1 { - pub_key: self.keypair.public_key().into(), + pub_key: self.keypair.public_key().to_vec(), timestamp, - lat: 19.642310, - lon: -155.990626, + // lat: 19.642310, + // lon: -155.990626, + lat: lat_lon.lat(), + lon: lat_lon.lng(), location_validation_timestamp: timestamp, operation_mode: true, coverage_object: coverage_object.as_bytes().to_vec(), @@ -152,7 +190,7 @@ impl Hotspot { wifi_heartbeat_req ); - let res = self.client.submit_wifi_heartbeat(request).await?; + let res = self.mobile_client.submit_wifi_heartbeat(request).await?; tracing::debug!( "submitted wifi_heartbeat @ {} = {:?}", timestamp.to_datetime(), @@ -174,3 +212,80 @@ impl Hotspot { request } } + +impl Drop for Hotspot { + fn drop(&mut self) { + tracing::debug!("Hotspot dropped") + } +} + +async fn populate_mobile_metadata( + keypair: &Keypair, + wallet: &Keypair, + location: CellIndex, +) -> Result<()> { + let database_url = "postgres://postgres:postgres@localhost:5432/mobile_metadata"; + + let pool = PgPoolOptions::new() + .max_connections(5) + .connect(database_url) + .await?; + + let uuid = Uuid::new_v4(); + let h3_index: u64 = location.into(); + let device_type = DeviceType::WifiIndoor; + let device_type_json = serde_json::to_value(&device_type)?; + + let wallet_b58 = wallet.public_key().to_string(); + + sqlx::query( + r#" + INSERT INTO mobile_hotspot_infos ( + address, asset, bump_seed, + location, is_full_hotspot, num_location_asserts, + refreshed_at, created_at, is_active, + dc_onboarding_fee_paid, device_type + ) + VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11) + "#, + ) + .bind(wallet_b58.as_str()) // address + .bind(uuid.to_string()) // asset + .bind(254) // bump_seed + .bind(h3_index as i64) // location + .bind(true) // is_full_hotspot + .bind(1) // num_location_asserts + .bind(Utc::now()) // refreshed_at + .bind(Utc::now()) // created_at + .bind(true) // is_active + .bind(400000) // dc_onboarding_fee_paid + .bind(device_type_json) // device_type + .execute(&pool) + .await?; + + // let pk_binary: PublicKeyBinary = keypair.public_key().to_owned().into(); + let pk_binary = PublicKeyBinary::from_str(keypair.public_key().to_string().as_str())?; + let entity_key = bs58::decode(pk_binary.to_string()).into_vec()?; + + sqlx::query( + r#" + INSERT INTO key_to_assets ( + address, asset, bump_seed, + created_at, dao, entity_key, + refreshed_at + ) + VALUES ($1, $2, $3, $4, $5, $6, $7) + "#, + ) + .bind(wallet_b58.as_str()) // address + .bind(uuid.to_string()) // asset + .bind(254) // bump_seed + .bind(Utc::now()) // created_at + .bind("BQ3MCuTT5zVBhNfQ4SjMh3NPVhFy73MPV8rjfq5d1zie") // dao + .bind(entity_key) // entity_key + .bind(Utc::now()) // refreshed_at + .execute(&pool) + .await?; + + Ok(()) +} diff --git a/test_mobile/tests/common/mod.rs b/test_mobile/tests/common/mod.rs index 12d03c7db..33090ff04 100644 --- a/test_mobile/tests/common/mod.rs +++ b/test_mobile/tests/common/mod.rs @@ -1,7 +1,6 @@ use std::time::{SystemTime, UNIX_EPOCH}; use chrono::{DateTime, NaiveDateTime, TimeZone, Utc}; -use helium_crypto::Keypair; pub mod docker; pub mod hotspot; @@ -26,10 +25,6 @@ pub fn now() -> u64 { .as_millis() as u64 } -pub fn keypair_to_bs58(keypair: &Keypair) -> String { - bs58::encode(keypair.public_key().to_vec()).into_string() -} - pub fn hours_ago(hours: i64) -> u64 { chrono::Duration::hours(hours).num_milliseconds() as u64 } diff --git a/test_mobile/tests/integration_test.rs b/test_mobile/tests/integration_test.rs index 1ab96d752..9d65bd961 100644 --- a/test_mobile/tests/integration_test.rs +++ b/test_mobile/tests/integration_test.rs @@ -1,5 +1,6 @@ use anyhow::Result; use common::{docker::Docker, hotspot::Hotspot, hours_ago}; +use test_mobile::cli::assignment::CENTER_CELL; use uuid::Uuid; mod common; @@ -23,7 +24,9 @@ async fn main() -> Result<()> { } } - let mut hotspot1 = Hotspot::new("api-token".to_string()).await; + let api_token = "api-token".to_string(); + + let mut hotspot1 = Hotspot::new(api_token, CENTER_CELL).await?; let co_uuid = Uuid::new_v4(); hotspot1.submit_coverage_object(co_uuid).await?; From 7cf11b79c8d51907be97a961c8aab348102daa8e Mon Sep 17 00:00:00 2001 From: Macpie Date: Wed, 5 Jun 2024 13:50:45 -0700 Subject: [PATCH 42/54] Fix for verifier --- docker/mobile/verifier/settings.toml | 2 +- mobile_config/src/gateway_service.rs | 5 ++- test_mobile/tests/common/hotspot.rs | 61 +++++++++++----------------- 3 files changed, 28 insertions(+), 40 deletions(-) diff --git a/docker/mobile/verifier/settings.toml b/docker/mobile/verifier/settings.toml index cb26b16c5..7bbfd85f5 100644 --- a/docker/mobile/verifier/settings.toml +++ b/docker/mobile/verifier/settings.toml @@ -46,5 +46,5 @@ endpoint = "http://localstack:4566" [config_client] url = "http://config:9081/" signing_keypair = "/opt/mobile-verifier/etc/keypair.bin" -config_pubkey = "14FGkBKPAdBuCtKGFkSnUmvoUBkJGjKVLrPrNLXKN3NgMiLTtwm" # ./target/release/mobile-config-cli env info --keypair=docker/mobile/verifier/keypair.bin +config_pubkey = "131kC5gTPFfTyzziHbh2PWz2VSdF4gDvhoC5vqCz25N7LFtDocF" diff --git a/mobile_config/src/gateway_service.rs b/mobile_config/src/gateway_service.rs index 048980d55..4ae55b691 100644 --- a/mobile_config/src/gateway_service.rs +++ b/mobile_config/src/gateway_service.rs @@ -81,7 +81,10 @@ impl mobile_config::Gateway for GatewayService { gateway_info::db::get_info(&self.metadata_pool, &pubkey) .await - .map_err(|_| Status::internal("error fetching gateway info"))? + .map_err(|err| { + tracing::error!("error fetching gateway info {:?}", err); + Status::internal("error fetching gateway info") + })? .map_or_else( || { telemetry::count_gateway_chain_lookup("not-found"); diff --git a/test_mobile/tests/common/hotspot.rs b/test_mobile/tests/common/hotspot.rs index a03f43906..a0ccfe80b 100644 --- a/test_mobile/tests/common/hotspot.rs +++ b/test_mobile/tests/common/hotspot.rs @@ -2,48 +2,32 @@ use anyhow::Result; use backon::{ExponentialBuilder, Retryable}; use chrono::Utc; use h3o::CellIndex; -use helium_crypto::{KeyTag, Keypair, PublicKey, PublicKeyBinary, Sign}; -use helium_proto::services::{ - mobile_config::DeviceType, - poc_mobile::{ - Client as PocMobileClient, CoverageObjectReqV1, RadioHexSignalLevel, SpeedtestReqV1, - WifiHeartbeatReqV1, - }, +use helium_crypto::{KeyTag, Keypair, PublicKeyBinary, Sign}; +use helium_proto::services::poc_mobile::{ + coverage_object_req_v1::KeyType, Client as PocMobileClient, CoverageObjectReqV1, + RadioHexSignalLevel, SpeedtestReqV1, WifiHeartbeatReqV1, }; use prost::Message; use rand::rngs::OsRng; use sqlx::postgres::PgPoolOptions; use std::str::FromStr; use tonic::{metadata::MetadataValue, transport::Channel, Request}; +use tracing::instrument; use uuid::Uuid; use crate::common::{hours_ago, now, TimestampToDateTime}; +#[derive(Debug)] pub struct Hotspot { mobile_client: PocMobileClient, api_token: String, keypair: Keypair, - wallet: Keypair, - serial: String, + b58: String, location: CellIndex, } -#[test] -fn it_works() { - let keypair = Keypair::generate(KeyTag::default(), &mut OsRng); - let x: Vec = keypair.public_key().into(); - println!("{:?}", keypair); - println!("{:?}", x); - println!("{:?}", keypair.public_key().to_vec()); - println!("{:?}", bs58::encode(x.clone()).into_string()); - println!( - "{:?}", - PublicKey::from_bytes(x.clone()).unwrap().to_string() - ); - println!("{:?}", PublicKeyBinary::from(x).to_string()); -} - impl Hotspot { + #[instrument] pub async fn new(api_token: String, index: u64) -> Result { let endpoint = "http://127.0.0.1:9080"; @@ -54,27 +38,25 @@ impl Hotspot { let keypair = Keypair::generate(KeyTag::default(), &mut OsRng); let wallet = Keypair::generate(KeyTag::default(), &mut OsRng); - let b58 = keypair.public_key().to_string(); - tracing::info!("hotspot {b58} connected to ingester"); + tracing::info!(hotspot = b58, "hotspot connected to ingester"); let location = h3o::CellIndex::try_from(index).unwrap(); + populate_mobile_metadata(&keypair, &wallet, location).await?; - let result = populate_mobile_metadata(&keypair, &wallet, location).await?; - - tracing::info!("{:?}", result); + tracing::info!("metadata pupulated"); Ok(Self { mobile_client: client, api_token: format!("Bearer {api_token}"), keypair, - wallet, - serial: b58, + b58, location, }) } + #[instrument(skip(self), fields(hotspot = %self.b58))] pub async fn submit_speedtest( &mut self, upload_speed: u64, @@ -85,7 +67,7 @@ impl Hotspot { let mut speedtest_req = SpeedtestReqV1 { pub_key: self.keypair.public_key().to_vec(), - serial: self.serial.clone(), + serial: self.b58.clone(), timestamp, upload_speed, download_speed, @@ -115,11 +97,13 @@ impl Hotspot { Ok(()) } + #[instrument(skip(self), fields(hotspot = %self.b58))] pub async fn submit_coverage_object(&mut self, uuid: Uuid) -> Result<()> { let coverage_claim_time = now() - hours_ago(24); + let pub_key = self.keypair.public_key().to_vec(); let mut coverage_object_req = CoverageObjectReqV1 { - pub_key: self.keypair.public_key().to_vec(), + pub_key: pub_key.clone(), uuid: uuid.as_bytes().to_vec(), coverage_claim_time, coverage: vec![RadioHexSignalLevel { @@ -130,7 +114,7 @@ impl Hotspot { indoor: false, trust_score: 1, signature: vec![], - key_type: None, + key_type: Some(KeyType::HotspotKey(pub_key)), }; coverage_object_req.signature = self @@ -155,6 +139,7 @@ impl Hotspot { Ok(()) } + #[instrument(skip(self), fields(hotspot = %self.b58))] pub async fn submit_wifi_heartbeat(&mut self, when: u64, coverage_object: Uuid) -> Result<()> { let timestamp = now() - when; @@ -219,6 +204,7 @@ impl Drop for Hotspot { } } +#[instrument(skip_all)] async fn populate_mobile_metadata( keypair: &Keypair, wallet: &Keypair, @@ -233,8 +219,7 @@ async fn populate_mobile_metadata( let uuid = Uuid::new_v4(); let h3_index: u64 = location.into(); - let device_type = DeviceType::WifiIndoor; - let device_type_json = serde_json::to_value(&device_type)?; + let device_type = serde_json::to_value("wifiIndoor")?; let wallet_b58 = wallet.public_key().to_string(); @@ -259,7 +244,7 @@ async fn populate_mobile_metadata( .bind(Utc::now()) // created_at .bind(true) // is_active .bind(400000) // dc_onboarding_fee_paid - .bind(device_type_json) // device_type + .bind(device_type) // device_type .execute(&pool) .await?; @@ -282,7 +267,7 @@ async fn populate_mobile_metadata( .bind(254) // bump_seed .bind(Utc::now()) // created_at .bind("BQ3MCuTT5zVBhNfQ4SjMh3NPVhFy73MPV8rjfq5d1zie") // dao - .bind(entity_key) // entity_key + .bind(entity_key.clone()) // entity_key .bind(Utc::now()) // refreshed_at .execute(&pool) .await?; From 192a5354d50d5cc0242b5e075608180dabfee687 Mon Sep 17 00:00:00 2001 From: Macpie Date: Thu, 6 Jun 2024 10:52:43 -0700 Subject: [PATCH 43/54] Fix Price report --- Cargo.lock | 1 + .../price_report.1717008060431.gz | Bin 33 -> 0 bytes .../price_report.1717632204453.gz | Bin 0 -> 44 bytes docker/mobile/localstack/init-s3.sh | 49 +++++------ test_mobile/Cargo.toml | 2 + test_mobile/README.md | 2 +- test_mobile/src/cli/price.rs | 81 +++++++++++++++--- test_mobile/src/main.rs | 7 ++ 8 files changed, 98 insertions(+), 44 deletions(-) delete mode 100644 docker/mobile/localstack/data/mobile-price/price_report.1717008060431.gz create mode 100644 docker/mobile/localstack/data/mobile-price/price_report.1717632204453.gz diff --git a/Cargo.lock b/Cargo.lock index 1ac48da71..1d2e6a608 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7872,6 +7872,7 @@ dependencies = [ "tonic", "tracing", "tracing-subscriber", + "triggered", "uuid", ] diff --git a/docker/mobile/localstack/data/mobile-price/price_report.1717008060431.gz b/docker/mobile/localstack/data/mobile-price/price_report.1717008060431.gz deleted file mode 100644 index b73a29510bfcc87b699090ea9951e8a80176f94e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33 kcmb2|=3oGW|Bo#$BxzsRpYZRNeVdREL%oXZeO{mp0JjASzyJUM diff --git a/docker/mobile/localstack/data/mobile-price/price_report.1717632204453.gz b/docker/mobile/localstack/data/mobile-price/price_report.1717632204453.gz new file mode 100644 index 0000000000000000000000000000000000000000..747ae7ae45e65c597932e69700fa5eef2f300e3c GIT binary patch literal 44 ucmb2|=3oGW|49i651v|FNYdW$<^ApK|2(QQK;r-ZGc)8a(0nEcWCH+aW)J-U literal 0 HcmV?d00001 diff --git a/docker/mobile/localstack/init-s3.sh b/docker/mobile/localstack/init-s3.sh index 98bd5e0ff..029d80864 100755 --- a/docker/mobile/localstack/init-s3.sh +++ b/docker/mobile/localstack/init-s3.sh @@ -6,23 +6,26 @@ awslocal s3 mb s3://mobile-packet-verifier awslocal s3 mb s3://mobile-price awslocal s3 mb s3://mobile-verifier-data-sets -# Description: -# This Bash script uploads files from subdirectories in /tmp/data to an S3-compatible service using awslocal. -# It treats each subdirectory as a separate bucket and uploads files with modified timestamps in their filenames. +# This shell script automates the process of uploading files from local directories +# to S3 buckets using `awslocal` (typically used with LocalStack for local AWS service emulation). # -# Script Overview: -# 1. Iterate Through Directories: The script iterates over each subdirectory in /tmp/data. -# 2. Extract Bucket Name: The script extracts the bucket name from each subdirectory's basename. -# 3. Process Files in Each Directory: For each file in the subdirectory, the script: -# - Prints the original file name and the bucket name for debugging purposes. -# - Generates a new file name by replacing any existing 13-digit timestamp with the current timestamp in milliseconds. -# - Prints the new file name and the S3 path for debugging purposes. -# - Uploads the file to the specified S3 bucket using awslocal s3 cp. +# 1. Define Source Directories: The script begins by setting the `dirs` variable to include +# all directories under `/tmp/data/`. # -# Key Points: -# - Directories and Buckets: Each subdirectory in /tmp/data is treated as a bucket. -# - File Processing: Files within these directories are uploaded to their respective buckets with a new timestamp in their filenames. - +# 2. Directory Iteration: It loops through each directory found in `/tmp/data/*`, +# processing one directory at a time. +# +# 3. Extract Bucket Name: For each directory, the script extracts the directory name +# (using `basename`) and assigns it as the S3 bucket name. +# +# 4. File Iteration: Within each directory, the script iterates over all files, +# checking if each item is a file (excluding subdirectories). +# +# 5. Upload to S3: For each file, the script uploads it to the corresponding S3 bucket +# using the `awslocal s3 cp` command. The file is placed in the S3 bucket with its original filename. +# +# 6. Debug Output: After each upload, the script prints the executed command for verification +# and debugging purposes, followed by a separator line for readability. dirs=/tmp/data/* for dir in $dirs; do echo "Looking @ $dir" @@ -31,25 +34,13 @@ for dir in $dirs; do for file in "$dir"/*; do if [[ -f "$file" ]]; then echo "Uploading $file to bucket $bucket" - now=$(date +%s000) file_name=$(basename "$file") - # Debugging output to check the file name and bucket - echo "Original file name: $file_name" - echo "Current timestamp: $now" - - # Replace timestamp in file name - new_file=$(echo "$file_name" | sed -E 's|[0-9]{13}|'"${now}"'|g') - - # Debugging output to check the new file name and bucket path - echo "New file name: $new_file" - echo "s3 path: s3://$bucket/$new_file" - # Perform the upload - awslocal s3 cp "$file" "s3://$bucket/$new_file" + awslocal s3 cp "$file" "s3://$bucket/$file_name" # Debugging output to confirm upload command - echo "Executed: awslocal s3 cp \"$file\" \"s3://$bucket/$new_file\"" + echo "Executed: awslocal s3 cp \"$file\" \"s3://$bucket/$file_name\"" echo "################################################################" fi done diff --git a/test_mobile/Cargo.toml b/test_mobile/Cargo.toml index 931524a09..cbc34e5a3 100644 --- a/test_mobile/Cargo.toml +++ b/test_mobile/Cargo.toml @@ -10,11 +10,13 @@ license.workspace = true anyhow = { workspace = true } async-compression = { version = "0", features = ["tokio", "gzip"] } clap = { workspace = true } +custom-tracing = { path = "../custom_tracing" } file-store = { path = "../file_store" } h3o = { workspace = true, features = ["geo"] } helium-proto = { workspace = true } hextree = { workspace = true } tokio = { workspace = true, features = ["io-util", "fs"] } +triggered = { workspace = true } [dev-dependencies] backon = "0" diff --git a/test_mobile/README.md b/test_mobile/README.md index 37982011d..9d2939f47 100644 --- a/test_mobile/README.md +++ b/test_mobile/README.md @@ -7,7 +7,7 @@ **NOTE:** Data is auto-generated. If you do not wish to change it, skip these steps. The commands are here to show how the data is generated. - Run `test-mobile assignment` and move the generated files[^files] to `docker/mobile/localstack/data/mobile-verifier-data-sets/` -- Run `test-mobile price` and move the generated file to `docker/mobile/localstack/data/mobile-price/` +- Run `AWS_ACCESS_KEY_ID=X AWS_SECRET_ACCESS_KEY=X AWS_SESSION_TOKEN=X test-mobile price` and move the generated file to `docker/mobile/localstack/data/mobile-price/`. This can also be ran when localstack is up and will uopload files. ### 2. Build Docker images diff --git a/test_mobile/src/cli/price.rs b/test_mobile/src/cli/price.rs index fa99d90b4..b871d3f81 100644 --- a/test_mobile/src/cli/price.rs +++ b/test_mobile/src/cli/price.rs @@ -1,9 +1,10 @@ -use std::time::{SystemTime, UNIX_EPOCH}; - use anyhow::Result; -use file_store::FileType; -use helium_proto::{BlockchainTokenTypeV1, Message, PriceReportV1}; -use tokio::{fs::File, io::AsyncWriteExt}; +use file_store::{file_sink, file_upload, FileType}; +use helium_proto::{BlockchainTokenTypeV1, PriceReportV1}; +use std::{ + path, + time::{Duration, SystemTime, UNIX_EPOCH}, +}; /// Generate Mobile price report #[derive(Debug, clap::Args)] @@ -14,24 +15,76 @@ pub struct Cmd { impl Cmd { pub async fn run(self) -> Result<()> { + let settings = file_store::Settings { + bucket: "mobile-price".to_string(), + endpoint: Some("http://localhost:4566".to_string()), + region: "us-east-1".to_string(), + access_key_id: None, + secret_access_key: None, + }; + + let (shutdown_trigger1, shutdown_listener1) = triggered::trigger(); + + // Initialize uploader + let (file_upload, file_upload_server) = + file_upload::FileUpload::from_settings_tm(&settings).await?; + + let file_upload_thread = tokio::spawn(async move { + file_upload_server + .run(shutdown_listener1) + .await + .expect("failed to complete file_upload_server"); + }); + + let store_base_path = path::Path::new("."); + + let (price_sink, price_sink_server) = file_sink::FileSinkBuilder::new( + FileType::PriceReport, + store_base_path, + file_upload.clone(), + concat!(env!("CARGO_PKG_NAME"), "_report_submission"), + ) + .auto_commit(false) + .roll_time(Duration::from_millis(100)) + .create() + .await?; + + let (shutdown_trigger2, shutdown_listener2) = triggered::trigger(); + let price_sink_thread = tokio::spawn(async move { + price_sink_server + .run(shutdown_listener2) + .await + .expect("failed to complete price_sink_server"); + }); + let now = SystemTime::now() .duration_since(UNIX_EPOCH) .unwrap() .as_millis(); - let file_name = format!("{}.{now}.gz", FileType::PriceReport.to_str()); - let file = File::create(file_name).await?; - - let mobile_price_report = PriceReportV1 { - price: self.price, + let price_report = PriceReportV1 { + price: 1000000, timestamp: now as u64, token_type: BlockchainTokenTypeV1::Mobile.into(), }; - let encoded_mpr = PriceReportV1::encode_to_vec(&mobile_price_report); - let mut writer = async_compression::tokio::write::GzipEncoder::new(file); - writer.write_all(&encoded_mpr).await?; - writer.shutdown().await?; + price_sink.write(price_report, []).await?; + + let price_sink_rcv = price_sink.commit().await.expect("commit failed"); + let _ = price_sink_rcv + .await + .expect("commit didn't complete completed"); + + let _ = tokio::time::sleep(Duration::from_secs(1)).await; + + shutdown_trigger1.trigger(); + shutdown_trigger2.trigger(); + file_upload_thread + .await + .expect("file_upload_thread did not complete"); + price_sink_thread + .await + .expect("price_sink_thread did not complete"); Ok(()) } diff --git a/test_mobile/src/main.rs b/test_mobile/src/main.rs index 4178e88b2..9f61e83e1 100644 --- a/test_mobile/src/main.rs +++ b/test_mobile/src/main.rs @@ -10,6 +10,13 @@ pub struct Cli { impl Cli { pub async fn run(self) -> Result<()> { + custom_tracing::init( + "info".to_string(), + custom_tracing::Settings { + tracing_cfg_file: "".to_string(), + }, + ) + .await?; self.cmd.run().await } } From 5b95628ca3a0fccdfa1e1f30676f67bd30726eaf Mon Sep 17 00:00:00 2001 From: Macpie Date: Thu, 6 Jun 2024 10:53:33 -0700 Subject: [PATCH 44/54] Enable full rewards --- .../post_migration/mobile_verifier-meta.sql | 37 +++++++++++++++++-- docker/mobile/reward_index/settings.toml | 2 +- docker/mobile/verifier/settings.toml | 2 +- test_mobile/tests/common/hotspot.rs | 12 ++---- test_mobile/tests/integration_test.rs | 8 +++- 5 files changed, 44 insertions(+), 17 deletions(-) diff --git a/docker/mobile/postgres_seeder/post_migration/mobile_verifier-meta.sql b/docker/mobile/postgres_seeder/post_migration/mobile_verifier-meta.sql index 95c797140..04be4bd93 100644 --- a/docker/mobile/postgres_seeder/post_migration/mobile_verifier-meta.sql +++ b/docker/mobile/postgres_seeder/post_migration/mobile_verifier-meta.sql @@ -11,7 +11,7 @@ VALUES from now() at time zone 'utc' ) - ) + ) - (24 * 60 * 60) + 180 ) ) ON CONFLICT (key) DO UPDATE @@ -24,7 +24,7 @@ SET from now() at time zone 'utc' ) - ) + ) - (24 * 60 * 60) + 180 ); INSERT INTO @@ -39,7 +39,36 @@ VALUES epoch from now() at time zone 'utc' - ) + ) + 180 -- Adding 180 seconds + ) + ) + ) ON CONFLICT (key) DO +UPDATE +SET + value = ( + SELECT + floor( + extract( + epoch + from + now() at time zone 'utc' + ) + ) + 180 -- Adding 180 seconds + ); + +INSERT INTO + meta (key, value) +VALUES + ( + 'disable_complete_data_checks_until', + ( + SELECT + floor( + extract( + epoch + from + now() at time zone 'utc' + ) + (24 * 60 * 60) ) ) ) ON CONFLICT (key) DO @@ -53,5 +82,5 @@ SET from now() at time zone 'utc' ) - ) + ) + (24 * 60 * 60) ); \ No newline at end of file diff --git a/docker/mobile/reward_index/settings.toml b/docker/mobile/reward_index/settings.toml index b9041e3ef..ac596fd15 100644 --- a/docker/mobile/reward_index/settings.toml +++ b/docker/mobile/reward_index/settings.toml @@ -1,5 +1,5 @@ modelog = "reward_index=debug,file_store=info,custom_tracing=info" -interval = "10 minutes" +interval = "10 seconds" mode = "mobile" unallocated_reward_entity_key = "131kC5gTPFfTyzziHbh2PWz2VSdF4gDvhoC5vqCz25N7LFtDocF" diff --git a/docker/mobile/verifier/settings.toml b/docker/mobile/verifier/settings.toml index 7bbfd85f5..f1229ffd6 100644 --- a/docker/mobile/verifier/settings.toml +++ b/docker/mobile/verifier/settings.toml @@ -1,4 +1,4 @@ -log = "mobile_verifier=debug,file_store=info,custom_tracing=info" +log = "price=debug,mobile_verifier=debug,file_store=info,custom_tracing=info" cache = "/opt/mobile-verifier/data" rewards = "24 hours" reward_period_offset = "30 seconds" diff --git a/test_mobile/tests/common/hotspot.rs b/test_mobile/tests/common/hotspot.rs index a0ccfe80b..dad841e9f 100644 --- a/test_mobile/tests/common/hotspot.rs +++ b/test_mobile/tests/common/hotspot.rs @@ -169,16 +169,11 @@ impl Hotspot { .expect("sign"); let request = self.set_metadata(wifi_heartbeat_req.clone()); - tracing::debug!( - "submitting wifi_heartbeat @ {} = {:?}", - timestamp.to_datetime(), - wifi_heartbeat_req - ); - let res = self.mobile_client.submit_wifi_heartbeat(request).await?; tracing::debug!( - "submitted wifi_heartbeat @ {} = {:?}", + "submitted wifi_heartbeat @ {} = {:?} {:?}", timestamp.to_datetime(), + wifi_heartbeat_req, res ); @@ -219,7 +214,7 @@ async fn populate_mobile_metadata( let uuid = Uuid::new_v4(); let h3_index: u64 = location.into(); - let device_type = serde_json::to_value("wifiIndoor")?; + let device_type = serde_json::to_value("wifiOutdoor")?; let wallet_b58 = wallet.public_key().to_string(); @@ -248,7 +243,6 @@ async fn populate_mobile_metadata( .execute(&pool) .await?; - // let pk_binary: PublicKeyBinary = keypair.public_key().to_owned().into(); let pk_binary = PublicKeyBinary::from_str(keypair.public_key().to_string().as_str())?; let entity_key = bs58::decode(pk_binary.to_string()).into_vec()?; diff --git a/test_mobile/tests/integration_test.rs b/test_mobile/tests/integration_test.rs index 9d65bd961..2b25e1f98 100644 --- a/test_mobile/tests/integration_test.rs +++ b/test_mobile/tests/integration_test.rs @@ -31,8 +31,12 @@ async fn main() -> Result<()> { hotspot1.submit_coverage_object(co_uuid).await?; - hotspot1.submit_speedtest(1001, 1001, 25).await?; - hotspot1.submit_speedtest(1002, 1002, 25).await?; + hotspot1 + .submit_speedtest(500_000_000, 500_000_000, 25) + .await?; + hotspot1 + .submit_speedtest(500_000_000, 500_000_000, 25) + .await?; for x in (1..=12).rev() { hotspot1 From 4939f76d606849cc1f9824d1e388c213cf4ccdaf Mon Sep 17 00:00:00 2001 From: Macpie Date: Thu, 6 Jun 2024 13:06:14 -0700 Subject: [PATCH 45/54] Make CoverageObjectReqV1 valid --- .../post_migration/mobile_config-pubkeys.sql | 14 ++++++++++ test_mobile/README.md | 4 ++- test_mobile/tests/common/hotspot.rs | 24 ++++++++++-------- test_mobile/tests/common/mod.rs | 20 +++++++++++++-- test_mobile/tests/integration_test.rs | 8 ++++-- test_mobile/tests/pc_keypair.bin | Bin 0 -> 65 bytes 6 files changed, 55 insertions(+), 15 deletions(-) create mode 100644 test_mobile/tests/pc_keypair.bin diff --git a/docker/mobile/postgres_seeder/post_migration/mobile_config-pubkeys.sql b/docker/mobile/postgres_seeder/post_migration/mobile_config-pubkeys.sql index 4949d45ef..88d2ac497 100644 --- a/docker/mobile/postgres_seeder/post_migration/mobile_config-pubkeys.sql +++ b/docker/mobile/postgres_seeder/post_migration/mobile_config-pubkeys.sql @@ -37,5 +37,19 @@ VALUES 'verifier' ) ON CONFLICT (pubkey, key_role) DO UPDATE +SET + updated_at = CURRENT_TIMESTAMP; + +INSERT INTO + registered_keys (pubkey, key_role, created_at, updated_at, name) +VALUES + ( + '13te9quF3s24VNrQmBRHnoNSwWPg48Jh2hfJdqFQoiFYiDcDAsp', + 'pcs', + CURRENT_TIMESTAMP, + CURRENT_TIMESTAMP, + 'Authorized Coverage Object Key' + ) ON CONFLICT (pubkey, key_role) DO +UPDATE SET updated_at = CURRENT_TIMESTAMP; \ No newline at end of file diff --git a/test_mobile/README.md b/test_mobile/README.md index 9d2939f47..749a8b3f7 100644 --- a/test_mobile/README.md +++ b/test_mobile/README.md @@ -21,4 +21,6 @@ **NOTE:** The test will `docker compose up` on start and `docker compose stop` at the end. It is up to **you** to `docker compose down` if you want to clean up. [^files]: Maps of hexes used -![Hexes](docs/hexes.jpg "Hexes") \ No newline at end of file +![Hexes](docs/hexes.jpg "Hexes") + +key pair for coverage object `13te9quF3s24VNrQmBRHnoNSwWPg48Jh2hfJdqFQoiFYiDcDAsp` \ No newline at end of file diff --git a/test_mobile/tests/common/hotspot.rs b/test_mobile/tests/common/hotspot.rs index dad841e9f..33574cbc5 100644 --- a/test_mobile/tests/common/hotspot.rs +++ b/test_mobile/tests/common/hotspot.rs @@ -2,20 +2,19 @@ use anyhow::Result; use backon::{ExponentialBuilder, Retryable}; use chrono::Utc; use h3o::CellIndex; -use helium_crypto::{KeyTag, Keypair, PublicKeyBinary, Sign}; +use helium_crypto::{Keypair, PublicKeyBinary, Sign}; use helium_proto::services::poc_mobile::{ coverage_object_req_v1::KeyType, Client as PocMobileClient, CoverageObjectReqV1, RadioHexSignalLevel, SpeedtestReqV1, WifiHeartbeatReqV1, }; use prost::Message; -use rand::rngs::OsRng; use sqlx::postgres::PgPoolOptions; -use std::str::FromStr; +use std::{str::FromStr, sync::Arc}; use tonic::{metadata::MetadataValue, transport::Channel, Request}; use tracing::instrument; use uuid::Uuid; -use crate::common::{hours_ago, now, TimestampToDateTime}; +use crate::common::{generate_keypair, hours_ago, now, TimestampToDateTime}; #[derive(Debug)] pub struct Hotspot { @@ -36,8 +35,8 @@ impl Hotspot { .await .expect("client connect"); - let keypair = Keypair::generate(KeyTag::default(), &mut OsRng); - let wallet = Keypair::generate(KeyTag::default(), &mut OsRng); + let keypair = generate_keypair(); + let wallet = generate_keypair(); let b58 = keypair.public_key().to_string(); tracing::info!(hotspot = b58, "hotspot connected to ingester"); @@ -98,12 +97,16 @@ impl Hotspot { } #[instrument(skip(self), fields(hotspot = %self.b58))] - pub async fn submit_coverage_object(&mut self, uuid: Uuid) -> Result<()> { + pub async fn submit_coverage_object( + &mut self, + uuid: Uuid, + pcs_keypair: Arc, + ) -> Result<()> { let coverage_claim_time = now() - hours_ago(24); let pub_key = self.keypair.public_key().to_vec(); let mut coverage_object_req = CoverageObjectReqV1 { - pub_key: pub_key.clone(), + pub_key: pcs_keypair.public_key().to_vec(), uuid: uuid.as_bytes().to_vec(), coverage_claim_time, coverage: vec![RadioHexSignalLevel { @@ -117,8 +120,7 @@ impl Hotspot { key_type: Some(KeyType::HotspotKey(pub_key)), }; - coverage_object_req.signature = self - .keypair + coverage_object_req.signature = pcs_keypair .sign(&coverage_object_req.encode_to_vec()) .expect("sign"); @@ -266,5 +268,7 @@ async fn populate_mobile_metadata( .execute(&pool) .await?; + pool.close().await; + Ok(()) } diff --git a/test_mobile/tests/common/mod.rs b/test_mobile/tests/common/mod.rs index 33090ff04..38b53cc6f 100644 --- a/test_mobile/tests/common/mod.rs +++ b/test_mobile/tests/common/mod.rs @@ -1,6 +1,12 @@ -use std::time::{SystemTime, UNIX_EPOCH}; - +use anyhow::Result; use chrono::{DateTime, NaiveDateTime, TimeZone, Utc}; +use helium_crypto::{KeyTag, Keypair}; +use rand::rngs::OsRng; +use std::{ + sync::Arc, + time::{SystemTime, UNIX_EPOCH}, +}; +use tracing::instrument; pub mod docker; pub mod hotspot; @@ -28,3 +34,13 @@ pub fn now() -> u64 { pub fn hours_ago(hours: i64) -> u64 { chrono::Duration::hours(hours).num_milliseconds() as u64 } + +pub fn generate_keypair() -> Keypair { + Keypair::generate(KeyTag::default(), &mut OsRng) +} + +pub async fn load_pcs_keypair() -> Result> { + let data = std::fs::read("tests/pc_keypair.bin").map_err(helium_crypto::Error::from)?; + let pcs_keypair = Arc::new(helium_crypto::Keypair::try_from(&data[..])?); + Ok(pcs_keypair) +} diff --git a/test_mobile/tests/integration_test.rs b/test_mobile/tests/integration_test.rs index 2b25e1f98..4039ec724 100644 --- a/test_mobile/tests/integration_test.rs +++ b/test_mobile/tests/integration_test.rs @@ -1,5 +1,5 @@ use anyhow::Result; -use common::{docker::Docker, hotspot::Hotspot, hours_ago}; +use common::{docker::Docker, hotspot::Hotspot, hours_ago, load_pcs_keypair}; use test_mobile::cli::assignment::CENTER_CELL; use uuid::Uuid; @@ -24,12 +24,16 @@ async fn main() -> Result<()> { } } + let pcs_keypair = load_pcs_keypair().await?; + let api_token = "api-token".to_string(); let mut hotspot1 = Hotspot::new(api_token, CENTER_CELL).await?; let co_uuid = Uuid::new_v4(); - hotspot1.submit_coverage_object(co_uuid).await?; + hotspot1 + .submit_coverage_object(co_uuid, pcs_keypair.clone()) + .await?; hotspot1 .submit_speedtest(500_000_000, 500_000_000, 25) diff --git a/test_mobile/tests/pc_keypair.bin b/test_mobile/tests/pc_keypair.bin new file mode 100644 index 0000000000000000000000000000000000000000..29d23f31913c9247242418d67222f7a0a2e8ec2c GIT binary patch literal 65 zcmV-H0KWeLGGNV|TWCQC94b_ZiPVmvS$YG{U6|TG_y9~J?V-K>e5L()l_g3j=GSv# XC?0*0JniVrFXI4Ld~YC4u*?is$=4n} literal 0 HcmV?d00001 From 681f1b4611ee19be3f9daf8e4d5050fa8663f78d Mon Sep 17 00:00:00 2001 From: Macpie Date: Thu, 6 Jun 2024 15:57:14 -0700 Subject: [PATCH 46/54] Make wifi heartbeat file process epoch larger --- docker/mobile/.env-mobile | 1 + docker/mobile/Dockerfile | 2 +- ingest/Cargo.toml | 2 +- ingest/src/server_mobile.rs | 2 +- mobile_verifier/Cargo.toml | 3 +++ mobile_verifier/src/heartbeats/wifi.rs | 23 +++++++++++++++++++++-- test_mobile/tests/common/mod.rs | 1 - test_mobile/tests/integration_test.rs | 6 +++++- 8 files changed, 33 insertions(+), 7 deletions(-) diff --git a/docker/mobile/.env-mobile b/docker/mobile/.env-mobile index 6eee6d514..dcd622fec 100644 --- a/docker/mobile/.env-mobile +++ b/docker/mobile/.env-mobile @@ -5,3 +5,4 @@ AWS_SECRET_ACCESS_KEY=AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN=AWS_SESSION_TOKEN HONOR_TIMESTAMP=0 +PROCESS_FILE_EPOCH_MIN=48 diff --git a/docker/mobile/Dockerfile b/docker/mobile/Dockerfile index a833aa6b9..3099c7f1a 100644 --- a/docker/mobile/Dockerfile +++ b/docker/mobile/Dockerfile @@ -41,7 +41,7 @@ RUN sed -i \ Cargo.toml # Build releases -RUN cargo build --features ingest/time --release +RUN cargo build --features "ingest/test,mobile-verifier/test" --release # Package Runners FROM debian:bookworm-slim diff --git a/ingest/Cargo.toml b/ingest/Cargo.toml index fd9857c87..5006f6345 100644 --- a/ingest/Cargo.toml +++ b/ingest/Cargo.toml @@ -43,4 +43,4 @@ humantime-serde = { workspace = true } backon = "0" [features] -time = [] +test = [] diff --git a/ingest/src/server_mobile.rs b/ingest/src/server_mobile.rs index cb4a0213d..3179e756e 100644 --- a/ingest/src/server_mobile.rs +++ b/ingest/src/server_mobile.rs @@ -494,7 +494,7 @@ pub async fn grpc_server(settings: &Settings) -> Result<()> { /// it returns the current time in milliseconds since the Unix epoch. /// fn maybe_honor_timestamp(timestamp: u64) -> u64 { - if cfg!(feature = "time") && std::env::var("HONOR_TIMESTAMP").is_ok() { + if cfg!(feature = "test") && std::env::var("HONOR_TIMESTAMP").is_ok() { let str = std::env::var("HONOR_TIMESTAMP").unwrap(); tracing::debug!("using HONOR_TIMESTAMP={str} and timestamp={timestamp}"); match str.as_str() { diff --git a/mobile_verifier/Cargo.toml b/mobile_verifier/Cargo.toml index 75d86b1ec..8a97913b4 100644 --- a/mobile_verifier/Cargo.toml +++ b/mobile_verifier/Cargo.toml @@ -61,3 +61,6 @@ hex-assignments = { path = "../hex_assignments" } [dev-dependencies] backon = "0" + +[features] +test = [] diff --git a/mobile_verifier/src/heartbeats/wifi.rs b/mobile_verifier/src/heartbeats/wifi.rs index 295a1c8df..2eecbb963 100644 --- a/mobile_verifier/src/heartbeats/wifi.rs +++ b/mobile_verifier/src/heartbeats/wifi.rs @@ -17,6 +17,7 @@ use futures::{stream::StreamExt, TryFutureExt}; use retainer::Cache; use sqlx::{Pool, Postgres}; use std::{ + ops::Range, sync::Arc, time::{self, Instant}, }; @@ -153,8 +154,7 @@ where ) -> anyhow::Result<()> { tracing::info!("Processing WIFI heartbeat file {}", file.file_info.key); let mut transaction = self.pool.begin().await?; - let epoch = (file.file_info.timestamp - Duration::hours(3)) - ..(file.file_info.timestamp + Duration::minutes(30)); + let epoch = process_file_epoch(file.file_info.timestamp); let heartbeats = file .into_stream(&mut transaction) .await? @@ -202,3 +202,22 @@ where ) } } + +/// Generates a time range around a given timestamp. +/// +/// By default, the range is from 3 hours before the given timestamp to 30 minutes after it. +/// If the `test` feature is enabled and the `PROCESS_FILE_EPOCH_MIN` environment variable is set, +/// the starting point of the range can be adjusted based on the value of the environment variable. +fn process_file_epoch(timestamp: DateTime) -> Range> { + let default = (timestamp - Duration::hours(3))..(timestamp + Duration::minutes(30)); + if cfg!(feature = "test") && std::env::var("PROCESS_FILE_EPOCH_MIN").is_ok() { + let str = std::env::var("PROCESS_FILE_EPOCH_MIN").unwrap(); + tracing::debug!("using PROCESS_FILE_EPOCH_MIN={str} and timestamp={timestamp}"); + match str.parse::() { + Ok(t) => (timestamp - Duration::hours(t))..(timestamp + Duration::minutes(30)), + Err(_e) => default, + } + } else { + default + } +} diff --git a/test_mobile/tests/common/mod.rs b/test_mobile/tests/common/mod.rs index 38b53cc6f..7bdc9e716 100644 --- a/test_mobile/tests/common/mod.rs +++ b/test_mobile/tests/common/mod.rs @@ -6,7 +6,6 @@ use std::{ sync::Arc, time::{SystemTime, UNIX_EPOCH}, }; -use tracing::instrument; pub mod docker; pub mod hotspot; diff --git a/test_mobile/tests/integration_test.rs b/test_mobile/tests/integration_test.rs index 4039ec724..1250ee28b 100644 --- a/test_mobile/tests/integration_test.rs +++ b/test_mobile/tests/integration_test.rs @@ -1,3 +1,5 @@ +use std::time::Duration; + use anyhow::Result; use common::{docker::Docker, hotspot::Hotspot, hours_ago, load_pcs_keypair}; use test_mobile::cli::assignment::CENTER_CELL; @@ -42,7 +44,9 @@ async fn main() -> Result<()> { .submit_speedtest(500_000_000, 500_000_000, 25) .await?; - for x in (1..=12).rev() { + let _ = tokio::time::sleep(Duration::from_secs(60)).await; + + for x in (1..=24).rev() { hotspot1 .submit_wifi_heartbeat(hours_ago(x), co_uuid) .await?; From ad41bc21de8456942e32bd26c445c465c55f2030 Mon Sep 17 00:00:00 2001 From: Macpie Date: Fri, 7 Jun 2024 11:26:40 -0700 Subject: [PATCH 47/54] - Fix boosted by adding tables - Fix urbanization file - Lower data_sets_poll_duration to 10s --- ...46427.gz => urbanization.1716936346427.gz} | Bin .../mobile_metadata-boosted_configs.sql | 19 ++++++++++++++++++ .../mobile_metadata-boosted_hexes.sql | 17 ++++++++++++++++ docker/mobile/verifier/settings.toml | 1 + 4 files changed, 37 insertions(+) rename docker/mobile/localstack/data/mobile-verifier-data-sets/{urbanized.1716936346427.gz => urbanization.1716936346427.gz} (100%) create mode 100644 docker/mobile/postgres_seeder/post_migration/mobile_metadata-boosted_configs.sql create mode 100644 docker/mobile/postgres_seeder/post_migration/mobile_metadata-boosted_hexes.sql diff --git a/docker/mobile/localstack/data/mobile-verifier-data-sets/urbanized.1716936346427.gz b/docker/mobile/localstack/data/mobile-verifier-data-sets/urbanization.1716936346427.gz similarity index 100% rename from docker/mobile/localstack/data/mobile-verifier-data-sets/urbanized.1716936346427.gz rename to docker/mobile/localstack/data/mobile-verifier-data-sets/urbanization.1716936346427.gz diff --git a/docker/mobile/postgres_seeder/post_migration/mobile_metadata-boosted_configs.sql b/docker/mobile/postgres_seeder/post_migration/mobile_metadata-boosted_configs.sql new file mode 100644 index 000000000..1546e52a9 --- /dev/null +++ b/docker/mobile/postgres_seeder/post_migration/mobile_metadata-boosted_configs.sql @@ -0,0 +1,19 @@ +CREATE TABLE public.boost_configs ( + address character varying(255) NOT NULL, + price_oracle character varying(255) NULL, + payment_mint character varying(255) NULL, + sub_dao character varying(255) NULL, + rent_reclaim_authority character varying(255) NULL, + boost_price numeric NULL, + period_length integer NULL, + minimum_periods integer NULL, + bump_seed integer NULL, + start_authority character varying(255) NULL, + refreshed_at timestamp with time zone NULL, + created_at timestamp with time zone NOT NULL +); + +ALTER TABLE + public.boost_configs +ADD + CONSTRAINT boost_configs_pkey PRIMARY KEY (address) \ No newline at end of file diff --git a/docker/mobile/postgres_seeder/post_migration/mobile_metadata-boosted_hexes.sql b/docker/mobile/postgres_seeder/post_migration/mobile_metadata-boosted_hexes.sql new file mode 100644 index 000000000..6fcebee0b --- /dev/null +++ b/docker/mobile/postgres_seeder/post_migration/mobile_metadata-boosted_hexes.sql @@ -0,0 +1,17 @@ +CREATE TABLE public.boosted_hexes ( + address character varying(255) NOT NULL, + boost_config character varying(255) NULL, + location numeric NULL, + start_ts numeric NULL, + reserved numeric [] NULL, + bump_seed integer NULL, + boosts_by_period bytea NULL, + version integer NULL, + refreshed_at timestamp with time zone NULL, + created_at timestamp with time zone NOT NULL +); + +ALTER TABLE + public.boosted_hexes +ADD + CONSTRAINT boosted_hexes_pkey PRIMARY KEY (address) \ No newline at end of file diff --git a/docker/mobile/verifier/settings.toml b/docker/mobile/verifier/settings.toml index f1229ffd6..519256e6a 100644 --- a/docker/mobile/verifier/settings.toml +++ b/docker/mobile/verifier/settings.toml @@ -7,6 +7,7 @@ modeled_coverage_start = "2023-08-20 00:00:00.000000000 UTC" data_sets_directory = "/opt/mobile-verifier/data_sets_directory" usa_and_mexico_geofence_regions = "/opt/mobile-verifier/usa_and_mexico_geofence_regions" usa_geofence_regions = "/opt/mobile-verifier/usa_geofence_regions" +data_sets_poll_duration = "10 seconds" [database] url = "postgres://postgres:postgres@postgres:5432/mobile_verifier" From ff1d7563d9f70fd8a928c61a7dcb6fa6c529b4cc Mon Sep 17 00:00:00 2001 From: Macpie Date: Fri, 7 Jun 2024 13:47:10 -0700 Subject: [PATCH 48/54] Some timestamps are in seconds ... --- test_mobile/tests/common/hotspot.rs | 13 +++++++++---- test_mobile/tests/integration_test.rs | 4 ++-- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/test_mobile/tests/common/hotspot.rs b/test_mobile/tests/common/hotspot.rs index 33574cbc5..b7a811e58 100644 --- a/test_mobile/tests/common/hotspot.rs +++ b/test_mobile/tests/common/hotspot.rs @@ -58,16 +58,17 @@ impl Hotspot { #[instrument(skip(self), fields(hotspot = %self.b58))] pub async fn submit_speedtest( &mut self, + when: u64, upload_speed: u64, download_speed: u64, latency: u32, ) -> Result<()> { - let timestamp = now(); + let timestamp = now() - when; let mut speedtest_req = SpeedtestReqV1 { pub_key: self.keypair.public_key().to_vec(), serial: self.b58.clone(), - timestamp, + timestamp: millis_to_seconds(timestamp), upload_speed, download_speed, latency, @@ -108,7 +109,7 @@ impl Hotspot { let mut coverage_object_req = CoverageObjectReqV1 { pub_key: pcs_keypair.public_key().to_vec(), uuid: uuid.as_bytes().to_vec(), - coverage_claim_time, + coverage_claim_time: millis_to_seconds(coverage_claim_time), coverage: vec![RadioHexSignalLevel { location: self.location.to_string(), signal_level: 3, @@ -159,7 +160,7 @@ impl Hotspot { // lon: -155.990626, lat: lat_lon.lat(), lon: lat_lon.lng(), - location_validation_timestamp: timestamp, + location_validation_timestamp: millis_to_seconds(timestamp), operation_mode: true, coverage_object: coverage_object.as_bytes().to_vec(), signature: vec![], @@ -201,6 +202,10 @@ impl Drop for Hotspot { } } +fn millis_to_seconds(milliseconds: u64) -> u64 { + milliseconds / 1000 +} + #[instrument(skip_all)] async fn populate_mobile_metadata( keypair: &Keypair, diff --git a/test_mobile/tests/integration_test.rs b/test_mobile/tests/integration_test.rs index 1250ee28b..4773223df 100644 --- a/test_mobile/tests/integration_test.rs +++ b/test_mobile/tests/integration_test.rs @@ -38,10 +38,10 @@ async fn main() -> Result<()> { .await?; hotspot1 - .submit_speedtest(500_000_000, 500_000_000, 25) + .submit_speedtest(hours_ago(2), 500_000_000, 500_000_000, 25) .await?; hotspot1 - .submit_speedtest(500_000_000, 500_000_000, 25) + .submit_speedtest(hours_ago(1), 500_000_000, 500_000_000, 25) .await?; let _ = tokio::time::sleep(Duration::from_secs(60)).await; From 22f24084d96739a0fb44e56fccf52f88932bb542 Mon Sep 17 00:00:00 2001 From: Macpie Date: Fri, 7 Jun 2024 15:21:39 -0700 Subject: [PATCH 49/54] Full test! --- test_mobile/tests/common/docker.rs | 11 ++++--- test_mobile/tests/common/hotspot.rs | 4 +++ test_mobile/tests/common/mod.rs | 17 ++++++++++ test_mobile/tests/integration_test.rs | 46 ++++++++++++++++++++++----- 4 files changed, 65 insertions(+), 13 deletions(-) diff --git a/test_mobile/tests/common/docker.rs b/test_mobile/tests/common/docker.rs index f8e3b4c23..ecb4f7d7d 100644 --- a/test_mobile/tests/common/docker.rs +++ b/test_mobile/tests/common/docker.rs @@ -25,11 +25,12 @@ impl Docker { } } - fn stop(&self) -> Result { + fn down(&self) -> Result { let up_output = Command::new("docker") .current_dir("../docker/mobile/") .arg("compose") - .arg("stop") + .arg("down") + .arg("-v") .output()?; if up_output.status.success() { @@ -46,9 +47,9 @@ impl Drop for Docker { fn drop(&mut self) { // This code runs when the scope exits, including if the test fails. tracing::debug!("Docker dropped"); - match self.stop() { - Ok(_) => tracing::info!("docker stack stopped"), - Err(e) => tracing::error!("docker compose stopped failed: {:?}", e), + match self.down() { + Ok(_) => tracing::info!("docker stack down"), + Err(e) => tracing::error!("docker compose down failed: {:?}", e), } } } diff --git a/test_mobile/tests/common/hotspot.rs b/test_mobile/tests/common/hotspot.rs index b7a811e58..a44656c56 100644 --- a/test_mobile/tests/common/hotspot.rs +++ b/test_mobile/tests/common/hotspot.rs @@ -194,6 +194,10 @@ impl Hotspot { request } + + pub fn b58(&self) -> &str { + &self.b58 + } } impl Drop for Hotspot { diff --git a/test_mobile/tests/common/mod.rs b/test_mobile/tests/common/mod.rs index 7bdc9e716..40e6243d9 100644 --- a/test_mobile/tests/common/mod.rs +++ b/test_mobile/tests/common/mod.rs @@ -2,6 +2,7 @@ use anyhow::Result; use chrono::{DateTime, NaiveDateTime, TimeZone, Utc}; use helium_crypto::{KeyTag, Keypair}; use rand::rngs::OsRng; +use sqlx::postgres::PgPoolOptions; use std::{ sync::Arc, time::{SystemTime, UNIX_EPOCH}, @@ -43,3 +44,19 @@ pub async fn load_pcs_keypair() -> Result> { let pcs_keypair = Arc::new(helium_crypto::Keypair::try_from(&data[..])?); Ok(pcs_keypair) } + +pub async fn get_rewards(address: String) -> Result> { + let pool = PgPoolOptions::new() + .max_connections(5) + .connect("postgres://postgres:postgres@localhost/mobile_index") + .await?; + + let row: Option<(i64,)> = sqlx::query_as("SELECT rewards FROM reward_index WHERE address = $1") + .bind(address) + .fetch_optional(&pool) + .await?; + + pool.close().await; + + Ok(row.map(|r| r.0 as u64)) +} diff --git a/test_mobile/tests/integration_test.rs b/test_mobile/tests/integration_test.rs index 4773223df..760d05d1f 100644 --- a/test_mobile/tests/integration_test.rs +++ b/test_mobile/tests/integration_test.rs @@ -1,7 +1,7 @@ use std::time::Duration; use anyhow::Result; -use common::{docker::Docker, hotspot::Hotspot, hours_ago, load_pcs_keypair}; +use common::{docker::Docker, get_rewards, hotspot::Hotspot, hours_ago, load_pcs_keypair}; use test_mobile::cli::assignment::CENTER_CELL; use uuid::Uuid; @@ -15,16 +15,16 @@ async fn main() -> Result<()> { ) .await?; - if std::env::var("DOCKER").is_ok() { - let docker = Docker::new(); + // if std::env::var("DOCKER").is_ok() { + let docker = Docker::new(); - match docker.up() { - Ok(_) => { - tracing::info!("docker compose started") - } - Err(e) => panic!("docker::up failed: {:?}", e), + match docker.up() { + Ok(_) => { + tracing::info!("docker compose started") } + Err(e) => panic!("docker::up failed: {:?}", e), } + // } let pcs_keypair = load_pcs_keypair().await?; @@ -44,6 +44,7 @@ async fn main() -> Result<()> { .submit_speedtest(hours_ago(1), 500_000_000, 500_000_000, 25) .await?; + // giving time for submit_coverage_object FIXME let _ = tokio::time::sleep(Duration::from_secs(60)).await; for x in (1..=24).rev() { @@ -52,5 +53,34 @@ async fn main() -> Result<()> { .await?; } + let mut retry = 0; + const MAX_RETRIES: u32 = 6 * 5; + const RETRY_WAIT: Duration = Duration::from_secs(10); + while retry <= MAX_RETRIES { + match get_rewards(hotspot1.b58().to_string()).await { + Err(e) => { + tracing::error!("failed to get rewards for {} {e:?} ", hotspot1.b58()); + retry += 1; + tokio::time::sleep(RETRY_WAIT).await; + } + Ok(None) => { + tracing::debug!("no rewards for {}", hotspot1.b58()); + retry += 1; + tokio::time::sleep(RETRY_WAIT).await; + } + Ok(Some(reward)) => { + tracing::debug!("rewards for {} are {reward}", hotspot1.b58()); + let expected = 49180327868852; + assert_eq!( + expected, + reward, + "rewards for {} are wrong {reward} vs expected {expected}", + hotspot1.b58() + ); + return Ok(()); + } + } + } + Ok(()) } From bea5cf788b42a605ca1a6642c64e0a0e823410c3 Mon Sep 17 00:00:00 2001 From: Macpie Date: Fri, 7 Jun 2024 15:52:45 -0700 Subject: [PATCH 50/54] Cleanup when test is successful --- test_mobile/tests/common/docker.rs | 13 +--------- test_mobile/tests/integration_test.rs | 35 ++++++++++++++++++++++++--- 2 files changed, 32 insertions(+), 16 deletions(-) diff --git a/test_mobile/tests/common/docker.rs b/test_mobile/tests/common/docker.rs index ecb4f7d7d..01fd70aaf 100644 --- a/test_mobile/tests/common/docker.rs +++ b/test_mobile/tests/common/docker.rs @@ -25,7 +25,7 @@ impl Docker { } } - fn down(&self) -> Result { + pub fn down(&self) -> Result { let up_output = Command::new("docker") .current_dir("../docker/mobile/") .arg("compose") @@ -42,14 +42,3 @@ impl Docker { } } } - -impl Drop for Docker { - fn drop(&mut self) { - // This code runs when the scope exits, including if the test fails. - tracing::debug!("Docker dropped"); - match self.down() { - Ok(_) => tracing::info!("docker stack down"), - Err(e) => tracing::error!("docker compose down failed: {:?}", e), - } - } -} diff --git a/test_mobile/tests/integration_test.rs b/test_mobile/tests/integration_test.rs index 760d05d1f..3af71af92 100644 --- a/test_mobile/tests/integration_test.rs +++ b/test_mobile/tests/integration_test.rs @@ -7,24 +7,50 @@ use uuid::Uuid; mod common; +struct TestGuard(Option); + +impl TestGuard { + fn new() -> Self { + TestGuard(None) + } + + fn set_cleanup(&mut self, f: F) { + self.0 = Some(f); + } +} + +impl Drop for TestGuard { + fn drop(&mut self) { + if let Some(f) = self.0.take() { + f(); + } + } +} + #[tokio::test] async fn main() -> Result<()> { + let docker = Docker::new(); + + // Function to execute after the test if it's successful + let cleanup = || { + tracing::info!("Test succeeded! Running cleanup..."); + docker.down().unwrap(); + }; + + let mut guard = TestGuard::new(); + custom_tracing::init( "info,integration_test=debug".to_string(), custom_tracing::Settings::default(), ) .await?; - // if std::env::var("DOCKER").is_ok() { - let docker = Docker::new(); - match docker.up() { Ok(_) => { tracing::info!("docker compose started") } Err(e) => panic!("docker::up failed: {:?}", e), } - // } let pcs_keypair = load_pcs_keypair().await?; @@ -77,6 +103,7 @@ async fn main() -> Result<()> { "rewards for {} are wrong {reward} vs expected {expected}", hotspot1.b58() ); + guard.set_cleanup(cleanup); // Activate the guard if the test is successful return Ok(()); } } From ef88c2402e7131c8700c854ec7757d4d1bffe685 Mon Sep 17 00:00:00 2001 From: Macpie Date: Fri, 7 Jun 2024 16:10:38 -0700 Subject: [PATCH 51/54] Improve TestGuard --- test_mobile/tests/integration_test.rs | 32 +++++++++++++++++---------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/test_mobile/tests/integration_test.rs b/test_mobile/tests/integration_test.rs index 3af71af92..054665f50 100644 --- a/test_mobile/tests/integration_test.rs +++ b/test_mobile/tests/integration_test.rs @@ -7,22 +7,32 @@ use uuid::Uuid; mod common; -struct TestGuard(Option); +// struct TestGuard(Option); + +struct TestGuard { + success: bool, + fun: Option, +} impl TestGuard { - fn new() -> Self { - TestGuard(None) + fn new(f: F) -> Self { + TestGuard { + success: false, + fun: Some(f), + } } - fn set_cleanup(&mut self, f: F) { - self.0 = Some(f); + fn successful(&mut self) { + self.success = true } } impl Drop for TestGuard { fn drop(&mut self) { - if let Some(f) = self.0.take() { - f(); + if self.success { + if let Some(f) = self.fun.take() { + f(); + } } } } @@ -32,12 +42,10 @@ async fn main() -> Result<()> { let docker = Docker::new(); // Function to execute after the test if it's successful - let cleanup = || { + let mut guard = TestGuard::new(|| { tracing::info!("Test succeeded! Running cleanup..."); docker.down().unwrap(); - }; - - let mut guard = TestGuard::new(); + }); custom_tracing::init( "info,integration_test=debug".to_string(), @@ -103,7 +111,7 @@ async fn main() -> Result<()> { "rewards for {} are wrong {reward} vs expected {expected}", hotspot1.b58() ); - guard.set_cleanup(cleanup); // Activate the guard if the test is successful + guard.successful(); return Ok(()); } } From c5d4587135bbd9a96f8a389cb812adaf05d27f24 Mon Sep 17 00:00:00 2001 From: Macpie Date: Mon, 10 Jun 2024 10:26:15 -0700 Subject: [PATCH 52/54] Avoid rate limit --- .github/workflows/CI.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index f7bab3b85..09a923b7a 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -30,6 +30,8 @@ jobs: - name: Install Protoc uses: arduino/setup-protoc@v3 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} - name: Cache uses: actions/cache@v4 @@ -78,6 +80,8 @@ jobs: - name: Install Protoc uses: arduino/setup-protoc@v3 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} - name: Clippy run: cargo clippy --all-targets -- -Dclippy::all -D warnings @@ -113,6 +117,8 @@ jobs: - name: Install Protoc uses: arduino/setup-protoc@v3 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} - name: Cache uses: actions/cache@v4 @@ -149,6 +155,8 @@ jobs: - name: Install Protoc uses: arduino/setup-protoc@v3 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} - name: Cache uses: actions/cache@v4 @@ -178,6 +186,8 @@ jobs: - name: Install Protoc uses: arduino/setup-protoc@v3 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} - name: Cache uses: actions/cache@v4 From 86bd7f036abd900e16dcff5b6e6cb05200f4eab0 Mon Sep 17 00:00:00 2001 From: Macpie Date: Mon, 10 Jun 2024 11:01:30 -0700 Subject: [PATCH 53/54] More comments --- docker/mobile/.env-mobile | 4 ++++ test_mobile/README.md | 23 +++++++++++++++-------- test_mobile/tests/integration_test.rs | 2 +- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/docker/mobile/.env-mobile b/docker/mobile/.env-mobile index dcd622fec..22c3169a8 100644 --- a/docker/mobile/.env-mobile +++ b/docker/mobile/.env-mobile @@ -1,8 +1,12 @@ RUST_BACKTRACE=1 +# As the be set for s3 file store AWS_ACCESS_KEY_ID=AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY=AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN=AWS_SESSION_TOKEN +# Ingest: use timestamps sent by client. This allows to send heartbeats from 24 hours ago. HONOR_TIMESTAMP=0 + +# Mobile Verifier: Allow to process heartbeats that are more than 3 hours old. PROCESS_FILE_EPOCH_MIN=48 diff --git a/test_mobile/README.md b/test_mobile/README.md index 749a8b3f7..0d6b3c288 100644 --- a/test_mobile/README.md +++ b/test_mobile/README.md @@ -2,25 +2,32 @@ ## Setup -### 1. Generate data +### 1. Generate Data **NOTE:** Data is auto-generated. If you do not wish to change it, skip these steps. The commands are here to show how the data is generated. -- Run `test-mobile assignment` and move the generated files[^files] to `docker/mobile/localstack/data/mobile-verifier-data-sets/` -- Run `AWS_ACCESS_KEY_ID=X AWS_SECRET_ACCESS_KEY=X AWS_SESSION_TOKEN=X test-mobile price` and move the generated file to `docker/mobile/localstack/data/mobile-price/`. This can also be ran when localstack is up and will uopload files. +- Run `test-mobile assignment` and move the generated files[^files] to `docker/mobile/localstack/data/mobile-verifier-data-sets/`. +- Run `AWS_ACCESS_KEY_ID=X AWS_SECRET_ACCESS_KEY=X AWS_SESSION_TOKEN=X test-mobile price` and move the generated file to `docker/mobile/localstack/data/mobile-price/`. This can also be run when LocalStack is up and will upload files. -### 2. Build Docker images +### 2. Build Docker Images -- Navigate to the `docker` directory: `cd docker` +- Navigate to the `docker` directory: `cd docker/mobile` - Build the Docker images: `docker compose build` -### 3. Run tests +### 3. Run Tests - Run the integration tests: `cargo test --package test-mobile --test integration_test -- --nocapture` -**NOTE:** The test will `docker compose up` on start and `docker compose stop` at the end. It is up to **you** to `docker compose down` if you want to clean up. +**NOTE:** The test will run `docker compose up` on start and `docker compose down -v` at the end (if the test is successful). [^files]: Maps of hexes used ![Hexes](docs/hexes.jpg "Hexes") -key pair for coverage object `13te9quF3s24VNrQmBRHnoNSwWPg48Jh2hfJdqFQoiFYiDcDAsp` \ No newline at end of file +## Others + +### Keypairs + +- `13te9quF3s24VNrQmBRHnoNSwWPg48Jh2hfJdqFQoiFYiDcDAsp` Coverage object +- `14FGkBKPAdBuCtKGFkSnUmvoUBkJGjKVLrPrNLXKN3NgMiLTtwm` Mobile Verifier +- `14c5dZUZgFEVcocB3mfcjhXEVqDuafnpzghgyr2i422okXVByPr` Mobile Packer Verifier +- `131kC5gTPFfTyzziHbh2PWz2VSdF4gDvhoC5vqCz25N7LFtDocF` Mobile Config \ No newline at end of file diff --git a/test_mobile/tests/integration_test.rs b/test_mobile/tests/integration_test.rs index 054665f50..2040ada79 100644 --- a/test_mobile/tests/integration_test.rs +++ b/test_mobile/tests/integration_test.rs @@ -78,7 +78,7 @@ async fn main() -> Result<()> { .submit_speedtest(hours_ago(1), 500_000_000, 500_000_000, 25) .await?; - // giving time for submit_coverage_object FIXME + // FIXME: giving time for submit_coverage_object let _ = tokio::time::sleep(Duration::from_secs(60)).await; for x in (1..=24).rev() { From 026572487ac74a1ac319f6a028f95aaeefd7cacf Mon Sep 17 00:00:00 2001 From: Macpie Date: Mon, 10 Jun 2024 11:09:56 -0700 Subject: [PATCH 54/54] rename test feature --- docker/mobile/Dockerfile | 2 +- ingest/Cargo.toml | 2 +- ingest/src/server_mobile.rs | 2 +- mobile_verifier/Cargo.toml | 2 +- mobile_verifier/src/heartbeats/wifi.rs | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docker/mobile/Dockerfile b/docker/mobile/Dockerfile index 3099c7f1a..ce3c3e98d 100644 --- a/docker/mobile/Dockerfile +++ b/docker/mobile/Dockerfile @@ -41,7 +41,7 @@ RUN sed -i \ Cargo.toml # Build releases -RUN cargo build --features "ingest/test,mobile-verifier/test" --release +RUN cargo build --features "ingest/mobile-test,mobile-verifier/mobile-test" --release # Package Runners FROM debian:bookworm-slim diff --git a/ingest/Cargo.toml b/ingest/Cargo.toml index 5006f6345..8aa3cf9d3 100644 --- a/ingest/Cargo.toml +++ b/ingest/Cargo.toml @@ -43,4 +43,4 @@ humantime-serde = { workspace = true } backon = "0" [features] -test = [] +mobile-test = [] diff --git a/ingest/src/server_mobile.rs b/ingest/src/server_mobile.rs index 3179e756e..f1e806265 100644 --- a/ingest/src/server_mobile.rs +++ b/ingest/src/server_mobile.rs @@ -494,7 +494,7 @@ pub async fn grpc_server(settings: &Settings) -> Result<()> { /// it returns the current time in milliseconds since the Unix epoch. /// fn maybe_honor_timestamp(timestamp: u64) -> u64 { - if cfg!(feature = "test") && std::env::var("HONOR_TIMESTAMP").is_ok() { + if cfg!(feature = "mobile-test") && std::env::var("HONOR_TIMESTAMP").is_ok() { let str = std::env::var("HONOR_TIMESTAMP").unwrap(); tracing::debug!("using HONOR_TIMESTAMP={str} and timestamp={timestamp}"); match str.as_str() { diff --git a/mobile_verifier/Cargo.toml b/mobile_verifier/Cargo.toml index 8a97913b4..d3834efd7 100644 --- a/mobile_verifier/Cargo.toml +++ b/mobile_verifier/Cargo.toml @@ -63,4 +63,4 @@ hex-assignments = { path = "../hex_assignments" } backon = "0" [features] -test = [] +mobile-test = [] diff --git a/mobile_verifier/src/heartbeats/wifi.rs b/mobile_verifier/src/heartbeats/wifi.rs index 2eecbb963..4be7919f1 100644 --- a/mobile_verifier/src/heartbeats/wifi.rs +++ b/mobile_verifier/src/heartbeats/wifi.rs @@ -210,7 +210,7 @@ where /// the starting point of the range can be adjusted based on the value of the environment variable. fn process_file_epoch(timestamp: DateTime) -> Range> { let default = (timestamp - Duration::hours(3))..(timestamp + Duration::minutes(30)); - if cfg!(feature = "test") && std::env::var("PROCESS_FILE_EPOCH_MIN").is_ok() { + if cfg!(feature = "mobile-test") && std::env::var("PROCESS_FILE_EPOCH_MIN").is_ok() { let str = std::env::var("PROCESS_FILE_EPOCH_MIN").unwrap(); tracing::debug!("using PROCESS_FILE_EPOCH_MIN={str} and timestamp={timestamp}"); match str.parse::() {