diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index aa8f2b41..39533206 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -117,7 +117,7 @@ jobs: - uses: ./.github/actions/setup - uses: ./.github/actions/run-bazel-test with: - target: //test/integration/submitqueue/extension/counter/... + target: //test/integration/extension/counter/... queue-integration-test: name: Queue Extension Test @@ -128,7 +128,7 @@ jobs: - uses: ./.github/actions/setup - uses: ./.github/actions/run-bazel-test with: - target: //test/integration/extension/queue/... + target: //test/integration/extension/messagequeue/... storage-integration-test: name: Storage Extension Test diff --git a/CLAUDE.md b/CLAUDE.md index 75bf39b5..02ffa738 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -140,8 +140,8 @@ Paths follow the directory layout: shared code is top-level, domain code nests u - Domain entities: `github.com/uber/submitqueue/{domain}/entity` (e.g. `.../submitqueue/entity`) - Domain extensions: `github.com/uber/submitqueue/{domain}/extension/{ext}[/{impl}]` (e.g. `.../submitqueue/extension/storage/mysql`) - Domain-internal infra: `github.com/uber/submitqueue/{domain}/core/{pkg}` (e.g. `.../submitqueue/core/consumer`, `.../submitqueue/core/request`) -- Shared entities: `github.com/uber/submitqueue/entity/{name}` (e.g. `.../entity/queue`) -- Shared extensions: `github.com/uber/submitqueue/extension/{name}` (e.g. `.../extension/queue`) +- Shared entities: `github.com/uber/submitqueue/entity/{name}` (e.g. `.../entity/messagequeue`) +- Shared extensions: `github.com/uber/submitqueue/extension/{name}` (e.g. `.../extension/messagequeue`) - Cross-domain infra: `github.com/uber/submitqueue/core/{pkg}` (e.g. `.../core/errs`, `.../core/metrics`) ## Development @@ -167,7 +167,7 @@ Generated proto files are committed. When modifying `.proto` files: - **Directories**: singular (`mock/`, `entity/`, not `mocks/`, `entities/`) - **Files**: `{method}.go`, `{entity}.go`, `{file}_test.go`, `BUILD.bazel` - **Proto files**: `{service}.proto` -- **Test compose contexts**: the `testContext` passed to `NewComposeStack` (and thus the `sq-test-{context}-…` Docker project/container names) must be **domain-qualified** — `{category}-{domain}-{name}` where `{category}` is `svc`/`ext`/`core`/`e2e` and `{domain}` is `submitqueue`/`stovepipe`/… (omit the domain only for shared/cross-domain suites, e.g. `ext-queue-sql`). This keeps containers unambiguous and lets suites run in parallel. See [doc/howto/TESTING.md](doc/howto/TESTING.md#container-naming). +- **Test compose contexts**: the `testContext` passed to `NewComposeStack` (and thus the `sq-test-{context}-…` Docker project/container names) must be **domain-qualified** — `{category}-{domain}-{name}` where `{category}` is `svc`/`ext`/`core`/`e2e` and `{domain}` is `submitqueue`/`stovepipe`/… (omit the domain only for shared/cross-domain suites, e.g. `ext-messagequeue-sql`). This keeps containers unambiguous and lets suites run in parallel. See [doc/howto/TESTING.md](doc/howto/TESTING.md#container-naming). - **README files**: Do not duplicate interface or type definitions as code blocks in READMEs. Describe behavior in prose and let readers navigate to the source. Only include code samples when explicitly instructed. - **Markdown prose width**: Do not hard-wrap prose in Markdown docs (RFCs under `doc/`, READMEs). Write one line per paragraph and one line per list item, and let the editor soft-wrap — hard wrapping at a fixed column renders as a narrow fixed-width column regardless of window size. Code blocks, tables, and ASCII diagrams keep their own line breaks. @@ -241,7 +241,7 @@ To create a mock package for a new extension (e.g., `submitqueue/extension/newex 3. Run `make mocks` to generate mock files into the new directory. 4. Run `make gazelle` to create the `BUILD.bazel` file automatically. -For inline mocks (mock in the same package, e.g., `extension/queue/mysql/mock_stores.go`): +For inline mocks (mock in the same package, e.g., `extension/messagequeue/mysql/mock_stores.go`): 1. Add a `//go:generate` directive with `-package=mypkg` and `-destination=mock_file.go`. 2. Run `make mocks` and `make gazelle`. diff --git a/Makefile b/Makefile index a14ee52a..e010ef5c 100644 --- a/Makefile +++ b/Makefile @@ -194,12 +194,12 @@ local-init-submitqueue-schemas: ## Manually apply all database schemas docker exec -i $(SUBMITQUEUE_LOCAL_PROJECT)-mysql-app-1 mysql -uroot -proot submitqueue < $$file 2>&1 | grep -v "Using a password" || true; \ done @echo "Applying counter schema to mysql-app..." - @for file in submitqueue/extension/counter/mysql/schema/*.sql; do \ + @for file in extension/counter/mysql/schema/*.sql; do \ echo " - Applying $$(basename $$file)..."; \ docker exec -i $(SUBMITQUEUE_LOCAL_PROJECT)-mysql-app-1 mysql -uroot -proot submitqueue < $$file 2>&1 | grep -v "Using a password" || true; \ done @echo "Applying queue schema to mysql-queue..." - @for file in extension/queue/mysql/schema/*.sql; do \ + @for file in extension/messagequeue/mysql/schema/*.sql; do \ echo " - Applying $$(basename $$file)..."; \ docker exec -i $(SUBMITQUEUE_LOCAL_PROJECT)-mysql-queue-1 mysql -uroot -proot submitqueue < $$file 2>&1 | grep -v "Using a password" || true; \ done @@ -207,7 +207,7 @@ local-init-submitqueue-schemas: ## Manually apply all database schemas local-init-stovepipe-queue-schema: ## Apply queue schema only (mysql-queue) for Stovepipe compose stacks @echo "Applying queue schema to mysql-queue (Stovepipe; no app storage/counter schema yet)..." - @for file in extension/queue/mysql/schema/*.sql; do \ + @for file in extension/messagequeue/mysql/schema/*.sql; do \ echo " - Applying $$(basename $$file)..."; \ docker exec -i $(STOVEPIPE_LOCAL_PROJECT)-mysql-queue-1 mysql -uroot -proot submitqueue < $$file 2>&1 | grep -v "Using a password" || true; \ done @@ -334,7 +334,7 @@ local-stovepipe-gateway-start: build-stovepipe-gateway-linux ## Start Stovepipe mocks: ## Generate mock files using mockgen @echo "Generating mocks..." - @$(BAZEL) run @rules_go//go -- generate ./submitqueue/extension/storage/... ./submitqueue/extension/buildrunner/... ./submitqueue/extension/changestore/... ./submitqueue/extension/counter/... ./extension/queue/... ./submitqueue/extension/queueconfig/... ./submitqueue/extension/mergechecker/... ./submitqueue/extension/pusher/... ./submitqueue/extension/scorer/... ./submitqueue/extension/conflict/... ./submitqueue/core/consumer/... + @$(BAZEL) run @rules_go//go -- generate ./submitqueue/extension/storage/... ./submitqueue/extension/buildrunner/... ./submitqueue/extension/changestore/... ./extension/counter/... ./extension/messagequeue/... ./submitqueue/extension/queueconfig/... ./submitqueue/extension/mergechecker/... ./submitqueue/extension/pusher/... ./submitqueue/extension/scorer/... ./submitqueue/extension/conflict/... ./submitqueue/core/consumer/... @echo "Mocks generated successfully!" proto: ## Generate protobuf files from .proto definitions @@ -381,7 +381,7 @@ run-client-stovepipe-orchestrator: @$(BAZEL) run //example/stovepipe/orchestrator/client:orchestrator -- -addr $(or $(SERVER_ADDR),localhost:8084) -message "$(or $(MESSAGE),ping)" run-queue-admin: ## Run queue-admin CLI (use ARGS to pass arguments, e.g. make run-queue-admin ARGS="list-topics") - @$(BAZEL) run //extension/queue/mysql/ctl -- $(ARGS) + @$(BAZEL) run //extension/messagequeue/mysql/ctl -- $(ARGS) test: ## Run unit tests @echo "Running unit tests..." diff --git a/doc/howto/TESTING.md b/doc/howto/TESTING.md index 1750ae95..cddd2432 100644 --- a/doc/howto/TESTING.md +++ b/doc/howto/TESTING.md @@ -23,13 +23,13 @@ SubmitQueue uses **two separate databases** to demonstrate proper architectural ### 1. Application Database - **Purpose**: Business data (requests, counters, batches) -- **Schema**: `submitqueue/extension/storage/mysql/schema`, `submitqueue/extension/counter/mysql/schema` +- **Schema**: `submitqueue/extension/storage/mysql/schema`, `extension/counter/mysql/schema` - **Used by**: Gateway (stores requests), Orchestrator (reads/updates request state) - **Connection**: `MYSQL_DSN` ### 2. Queue Database - **Purpose**: Messaging infrastructure (queue messages, offsets, partition leases) -- **Schema**: `extension/queue/mysql/schema` +- **Schema**: `extension/messagequeue/mysql/schema` - **Used by**: Gateway (publishes), Orchestrator (consumes) - **Connection**: `QUEUE_MYSQL_DSN` @@ -128,7 +128,7 @@ The `{context}` passed to `NewComposeStack` is **domain-qualified** so that the - `{domain}` — `submitqueue`, `stovepipe`, … — **omit for shared/cross-domain code** - `{name}` — the specific service/extension (e.g. `gateway`, `storage-mysql`) -Shared (cross-domain) suites carry no domain segment — e.g. the shared queue extension uses `ext-queue-sql`. +Shared (cross-domain) suites carry no domain segment — e.g. the shared queue extension uses `ext-messagequeue-sql`. ### Context reference @@ -138,9 +138,9 @@ Shared (cross-domain) suites carry no domain segment — e.g. the shared queue e | SubmitQueue orchestrator | `svc-submitqueue-orchestrator` | `sq-test-svc-submitqueue-orchestrator-xyz789-orchestrator-service-1` | | Stovepipe gateway | `svc-stovepipe-gateway` | `sq-test-svc-stovepipe-gateway-abc123-gateway-service-1` | | SubmitQueue storage extension | `ext-submitqueue-storage-mysql` | `sq-test-ext-submitqueue-storage-mysql-2ce1d0-mysql-1` | -| SubmitQueue counter extension | `ext-submitqueue-counter-mysql` | `sq-test-ext-submitqueue-counter-mysql-…-mysql-1` | +| Counter extension (shared) | `ext-counter-mysql` | `sq-test-ext-counter-mysql-…-mysql-1` | | SubmitQueue changestore extension | `ext-submitqueue-changestore-mysql` | `sq-test-ext-submitqueue-changestore-mysql-…-mysql-1` | -| Shared queue extension | `ext-queue-sql` | `sq-test-ext-queue-sql-a1b2c3-mysql-1` | +| Shared queue extension | `ext-messagequeue-sql` | `sq-test-ext-messagequeue-sql-a1b2c3-mysql-1` | | SubmitQueue consumer (core) | `core-submitqueue-consumer` | `sq-test-core-submitqueue-consumer-…-mysql-1` | | SubmitQueue e2e (full stack) | `e2e-submitqueue` | `sq-test-e2e-submitqueue-def456-gateway-service-1` | diff --git a/doc/rfc/sql-queue-rfc.md b/doc/rfc/sql-queue-rfc.md index 0edea882..63c0dce5 100644 --- a/doc/rfc/sql-queue-rfc.md +++ b/doc/rfc/sql-queue-rfc.md @@ -172,7 +172,7 @@ Messages are append-only. No per-message mutation during delivery. - `(topic, partition_key, offset)`: Core fetch query — poll messages in partition ordered by offset - `(topic, partition_key, id)`: Unique constraint and idempotent publish -See `extension/queue/mysql/schema/queue_messages.sql` for full schema. +See `extension/messagequeue/mysql/schema/queue_messages.sql` for full schema. ### Delivery State Table @@ -184,7 +184,7 @@ Per-consumer-group delivery tracking with explicit ack state. - `invisible_until`: Visibility timeout in epoch milliseconds (only meaningful when `acked = FALSE`) - `retry_count`: Number of times message has been redelivered to this consumer group -See `extension/queue/mysql/schema/queue_delivery_state.sql` for full schema. +See `extension/messagequeue/mysql/schema/queue_delivery_state.sql` for full schema. ### Partition Leases Table @@ -197,7 +197,7 @@ See `extension/queue/mysql/schema/queue_delivery_state.sql` for full schema. - `(leased_by)`: Find all partitions owned by a worker - `(lease_renewed_at)`: Detect stale leases across workers -See `extension/queue/mysql/schema/queue_partition_leases.sql` for full schema. +See `extension/messagequeue/mysql/schema/queue_partition_leases.sql` for full schema. ### Consumer Offsets Table @@ -210,7 +210,7 @@ See `extension/queue/mysql/schema/queue_partition_leases.sql` for full schema. - `(consumer_group)`: Monitor all offsets for a consumer group - `(topic)`: Find all consumers for a topic -See `extension/queue/mysql/schema/queue_offsets.sql` for full schema. +See `extension/messagequeue/mysql/schema/queue_offsets.sql` for full schema. ### Subscriber Heartbeats Table @@ -219,7 +219,7 @@ See `extension/queue/mysql/schema/queue_offsets.sql` for full schema. - `heartbeat_at`: Unix timestamp in milliseconds of last heartbeat - `deregistered_at`: Soft-delete timestamp (0 = active, >0 = deregistered during graceful shutdown) -See `extension/queue/mysql/schema/queue_subscriber_heartbeats.sql` for full schema. +See `extension/messagequeue/mysql/schema/queue_subscriber_heartbeats.sql` for full schema. ### Dead Letter Queue diff --git a/entity/queue/BUILD.bazel b/entity/messagequeue/BUILD.bazel similarity index 59% rename from entity/queue/BUILD.bazel rename to entity/messagequeue/BUILD.bazel index 07192954..91f17b91 100644 --- a/entity/queue/BUILD.bazel +++ b/entity/messagequeue/BUILD.bazel @@ -1,15 +1,15 @@ load("@rules_go//go:def.bzl", "go_library", "go_test") go_library( - name = "queue", + name = "messagequeue", srcs = ["message.go"], - importpath = "github.com/uber/submitqueue/entity/queue", + importpath = "github.com/uber/submitqueue/entity/messagequeue", visibility = ["//visibility:public"], ) go_test( - name = "queue_test", + name = "messagequeue_test", srcs = ["message_test.go"], - embed = [":queue"], + embed = [":messagequeue"], deps = ["@com_github_stretchr_testify//assert"], ) diff --git a/entity/queue/message.go b/entity/messagequeue/message.go similarity index 99% rename from entity/queue/message.go rename to entity/messagequeue/message.go index 9417e80a..7ebd8913 100644 --- a/entity/queue/message.go +++ b/entity/messagequeue/message.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package queue +package messagequeue import ( "maps" diff --git a/entity/queue/message_test.go b/entity/messagequeue/message_test.go similarity index 99% rename from entity/queue/message_test.go rename to entity/messagequeue/message_test.go index c0e815c5..2209596f 100644 --- a/entity/queue/message_test.go +++ b/entity/messagequeue/message_test.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package queue +package messagequeue import ( "testing" diff --git a/example/submitqueue/gateway/server/BUILD.bazel b/example/submitqueue/gateway/server/BUILD.bazel index b385f2c7..86baf961 100644 --- a/example/submitqueue/gateway/server/BUILD.bazel +++ b/example/submitqueue/gateway/server/BUILD.bazel @@ -11,9 +11,9 @@ go_library( importpath = "github.com/uber/submitqueue/example/submitqueue/gateway/server", visibility = ["//visibility:private"], deps = [ - "//extension/queue/mysql", + "//extension/counter/mysql", + "//extension/messagequeue/mysql", "//submitqueue/core/consumer", - "//submitqueue/extension/counter/mysql", "//submitqueue/extension/queueconfig/yaml", "//submitqueue/extension/storage/mysql", "//submitqueue/gateway/controller", diff --git a/example/submitqueue/gateway/server/main.go b/example/submitqueue/gateway/server/main.go index 776260db..368d05f1 100644 --- a/example/submitqueue/gateway/server/main.go +++ b/example/submitqueue/gateway/server/main.go @@ -28,9 +28,9 @@ import ( _ "github.com/go-sql-driver/mysql" "github.com/uber-go/tally/v4" - queueMySQL "github.com/uber/submitqueue/extension/queue/mysql" + mysqlcounter "github.com/uber/submitqueue/extension/counter/mysql" + queueMySQL "github.com/uber/submitqueue/extension/messagequeue/mysql" "github.com/uber/submitqueue/submitqueue/core/consumer" - mysqlcounter "github.com/uber/submitqueue/submitqueue/extension/counter/mysql" yamlqueueconfig "github.com/uber/submitqueue/submitqueue/extension/queueconfig/yaml" mysqlstorage "github.com/uber/submitqueue/submitqueue/extension/storage/mysql" "github.com/uber/submitqueue/submitqueue/gateway/controller" diff --git a/example/submitqueue/orchestrator/server/BUILD.bazel b/example/submitqueue/orchestrator/server/BUILD.bazel index e1e0892c..deb18c87 100644 --- a/example/submitqueue/orchestrator/server/BUILD.bazel +++ b/example/submitqueue/orchestrator/server/BUILD.bazel @@ -14,8 +14,10 @@ go_library( "//core/errs/generic", "//core/errs/mysql", "//core/httpclient", - "//extension/queue", - "//extension/queue/mysql", + "//extension/counter", + "//extension/counter/mysql", + "//extension/messagequeue", + "//extension/messagequeue/mysql", "//submitqueue/core/consumer", "//submitqueue/entity", "//submitqueue/extension/buildrunner", @@ -25,8 +27,6 @@ go_library( "//submitqueue/extension/changestore", "//submitqueue/extension/changestore/mysql", "//submitqueue/extension/conflict/all", - "//submitqueue/extension/counter", - "//submitqueue/extension/counter/mysql", "//submitqueue/extension/mergechecker", "//submitqueue/extension/mergechecker/github", "//submitqueue/extension/pusher", diff --git a/example/submitqueue/orchestrator/server/main.go b/example/submitqueue/orchestrator/server/main.go index 39146177..3cc0ebdd 100644 --- a/example/submitqueue/orchestrator/server/main.go +++ b/example/submitqueue/orchestrator/server/main.go @@ -33,8 +33,10 @@ import ( genericerrs "github.com/uber/submitqueue/core/errs/generic" mysqlerrs "github.com/uber/submitqueue/core/errs/mysql" "github.com/uber/submitqueue/core/httpclient" - extqueue "github.com/uber/submitqueue/extension/queue" - queueMySQL "github.com/uber/submitqueue/extension/queue/mysql" + "github.com/uber/submitqueue/extension/counter" + mysqlcounter "github.com/uber/submitqueue/extension/counter/mysql" + extqueue "github.com/uber/submitqueue/extension/messagequeue" + queueMySQL "github.com/uber/submitqueue/extension/messagequeue/mysql" "github.com/uber/submitqueue/submitqueue/core/consumer" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/buildrunner" @@ -44,8 +46,6 @@ import ( "github.com/uber/submitqueue/submitqueue/extension/changestore" mysqlchangestore "github.com/uber/submitqueue/submitqueue/extension/changestore/mysql" "github.com/uber/submitqueue/submitqueue/extension/conflict/all" - "github.com/uber/submitqueue/submitqueue/extension/counter" - mysqlcounter "github.com/uber/submitqueue/submitqueue/extension/counter/mysql" "github.com/uber/submitqueue/submitqueue/extension/mergechecker" githubchecker "github.com/uber/submitqueue/submitqueue/extension/mergechecker/github" "github.com/uber/submitqueue/submitqueue/extension/pusher" @@ -203,7 +203,7 @@ func run() error { // Create consumer. c := consumer.New(logger.Sugar(), scope.SubScope("consumer"), registry, genericerrs.Classifier, - // Storage (extension/storage/mysql) and queue (extension/queue/mysql) + // Storage (extension/storage/mysql) and queue (extension/messagequeue/mysql) // both run on the same MySQL driver, so a single classifier covers // errors surfaced from either backend. mysqlerrs.Classifier, diff --git a/submitqueue/extension/counter/BUILD.bazel b/extension/counter/BUILD.bazel similarity index 65% rename from submitqueue/extension/counter/BUILD.bazel rename to extension/counter/BUILD.bazel index 102cc817..ee7a5b31 100644 --- a/submitqueue/extension/counter/BUILD.bazel +++ b/extension/counter/BUILD.bazel @@ -3,6 +3,6 @@ load("@rules_go//go:def.bzl", "go_library") go_library( name = "counter", srcs = ["counter.go"], - importpath = "github.com/uber/submitqueue/submitqueue/extension/counter", + importpath = "github.com/uber/submitqueue/extension/counter", visibility = ["//visibility:public"], ) diff --git a/submitqueue/extension/counter/README.md b/extension/counter/README.md similarity index 100% rename from submitqueue/extension/counter/README.md rename to extension/counter/README.md diff --git a/submitqueue/extension/counter/counter.go b/extension/counter/counter.go similarity index 100% rename from submitqueue/extension/counter/counter.go rename to extension/counter/counter.go diff --git a/submitqueue/extension/counter/mock/BUILD.bazel b/extension/counter/mock/BUILD.bazel similarity index 70% rename from submitqueue/extension/counter/mock/BUILD.bazel rename to extension/counter/mock/BUILD.bazel index 7c5ad442..7d300325 100644 --- a/submitqueue/extension/counter/mock/BUILD.bazel +++ b/extension/counter/mock/BUILD.bazel @@ -3,7 +3,7 @@ load("@rules_go//go:def.bzl", "go_library") go_library( name = "mock", srcs = ["counter_mock.go"], - importpath = "github.com/uber/submitqueue/submitqueue/extension/counter/mock", + importpath = "github.com/uber/submitqueue/extension/counter/mock", visibility = ["//visibility:public"], deps = ["@org_uber_go_mock//gomock"], ) diff --git a/submitqueue/extension/counter/mock/counter_mock.go b/extension/counter/mock/counter_mock.go similarity index 100% rename from submitqueue/extension/counter/mock/counter_mock.go rename to extension/counter/mock/counter_mock.go diff --git a/submitqueue/extension/counter/mysql/BUILD.bazel b/extension/counter/mysql/BUILD.bazel similarity index 65% rename from submitqueue/extension/counter/mysql/BUILD.bazel rename to extension/counter/mysql/BUILD.bazel index d75c1b75..f123a089 100644 --- a/submitqueue/extension/counter/mysql/BUILD.bazel +++ b/extension/counter/mysql/BUILD.bazel @@ -3,11 +3,11 @@ load("@rules_go//go:def.bzl", "go_library") go_library( name = "mysql", srcs = ["counter.go"], - importpath = "github.com/uber/submitqueue/submitqueue/extension/counter/mysql", + importpath = "github.com/uber/submitqueue/extension/counter/mysql", visibility = ["//visibility:public"], deps = [ "//core/metrics", - "//submitqueue/extension/counter", + "//extension/counter", "@com_github_uber_go_tally_v4//:tally", ], ) diff --git a/submitqueue/extension/counter/mysql/counter.go b/extension/counter/mysql/counter.go similarity index 96% rename from submitqueue/extension/counter/mysql/counter.go rename to extension/counter/mysql/counter.go index 9cc25a2e..5c2f2ccc 100644 --- a/submitqueue/extension/counter/mysql/counter.go +++ b/extension/counter/mysql/counter.go @@ -21,7 +21,7 @@ import ( "github.com/uber-go/tally/v4" "github.com/uber/submitqueue/core/metrics" - "github.com/uber/submitqueue/submitqueue/extension/counter" + "github.com/uber/submitqueue/extension/counter" ) type mysqlCounter struct { diff --git a/submitqueue/extension/counter/mysql/schema/BUILD.bazel b/extension/counter/mysql/schema/BUILD.bazel similarity index 100% rename from submitqueue/extension/counter/mysql/schema/BUILD.bazel rename to extension/counter/mysql/schema/BUILD.bazel diff --git a/submitqueue/extension/counter/mysql/schema/counter.sql b/extension/counter/mysql/schema/counter.sql similarity index 100% rename from submitqueue/extension/counter/mysql/schema/counter.sql rename to extension/counter/mysql/schema/counter.sql diff --git a/extension/queue/BUILD.bazel b/extension/messagequeue/BUILD.bazel similarity index 68% rename from extension/queue/BUILD.bazel rename to extension/messagequeue/BUILD.bazel index 993dcbc9..6fab5bf9 100644 --- a/extension/queue/BUILD.bazel +++ b/extension/messagequeue/BUILD.bazel @@ -1,7 +1,7 @@ load("@rules_go//go:def.bzl", "go_library", "go_test") go_library( - name = "queue", + name = "messagequeue", srcs = [ "delivery.go", "publisher.go", @@ -9,15 +9,15 @@ go_library( "subscriber.go", "subscription_config.go", ], - importpath = "github.com/uber/submitqueue/extension/queue", + importpath = "github.com/uber/submitqueue/extension/messagequeue", visibility = ["//visibility:public"], - deps = ["//entity/queue"], + deps = ["//entity/messagequeue"], ) go_test( - name = "queue_test", + name = "messagequeue_test", srcs = ["subscription_config_test.go"], - embed = [":queue"], + embed = [":messagequeue"], deps = [ "@com_github_stretchr_testify//assert", "@com_github_stretchr_testify//require", diff --git a/extension/queue/README.md b/extension/messagequeue/README.md similarity index 100% rename from extension/queue/README.md rename to extension/messagequeue/README.md diff --git a/extension/queue/delivery.go b/extension/messagequeue/delivery.go similarity index 93% rename from extension/queue/delivery.go rename to extension/messagequeue/delivery.go index d5d772c7..c89cb025 100644 --- a/extension/queue/delivery.go +++ b/extension/messagequeue/delivery.go @@ -12,14 +12,14 @@ // See the License for the specific language governing permissions and // limitations under the License. -package queue +package messagequeue //go:generate mockgen -source=delivery.go -destination=mock/delivery_mock.go -package=mock import ( "context" - "github.com/uber/submitqueue/entity/queue" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" ) // Delivery represents a message delivered by a Subscriber. @@ -29,7 +29,7 @@ import ( // Ack/Nack/ExtendVisibilityTimeout should not be called concurrently on the same instance. type Delivery interface { // Message returns the delivered message. - Message() queue.Message + Message() entityqueue.Message // Ack acknowledges successful processing of the message. // The message will be removed from the queue and not redelivered. @@ -40,7 +40,7 @@ type Delivery interface { // If requeueAfterMillis is 0, the message is requeued immediately. Nack(ctx context.Context, requeueAfterMillis int64) error - // Reject moves the message to the dead letter queue. + // Reject moves the message to the dead letter entityqueue. // Use for poison pill messages that should never be retried. // reason is stored as last_error in the DLQ for debugging. // If DLQ is not configured, the message is acked (removed from queue). diff --git a/extension/queue/mock/BUILD.bazel b/extension/messagequeue/mock/BUILD.bazel similarity index 68% rename from extension/queue/mock/BUILD.bazel rename to extension/messagequeue/mock/BUILD.bazel index a1644cf6..717de202 100644 --- a/extension/queue/mock/BUILD.bazel +++ b/extension/messagequeue/mock/BUILD.bazel @@ -8,11 +8,11 @@ go_library( "queue_mock.go", "subscriber_mock.go", ], - importpath = "github.com/uber/submitqueue/extension/queue/mock", + importpath = "github.com/uber/submitqueue/extension/messagequeue/mock", visibility = ["//visibility:public"], deps = [ - "//entity/queue", - "//extension/queue", + "//entity/messagequeue", + "//extension/messagequeue", "@org_uber_go_mock//gomock", ], ) diff --git a/extension/queue/mock/delivery_mock.go b/extension/messagequeue/mock/delivery_mock.go similarity index 96% rename from extension/queue/mock/delivery_mock.go rename to extension/messagequeue/mock/delivery_mock.go index 9e7ed90b..8b936ede 100644 --- a/extension/queue/mock/delivery_mock.go +++ b/extension/messagequeue/mock/delivery_mock.go @@ -13,7 +13,7 @@ import ( context "context" reflect "reflect" - queue "github.com/uber/submitqueue/entity/queue" + messagequeue "github.com/uber/submitqueue/entity/messagequeue" gomock "go.uber.org/mock/gomock" ) @@ -98,10 +98,10 @@ func (mr *MockDeliveryMockRecorder) ExtendVisibilityTimeout(ctx, durationMillis } // Message mocks base method. -func (m *MockDelivery) Message() queue.Message { +func (m *MockDelivery) Message() messagequeue.Message { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Message") - ret0, _ := ret[0].(queue.Message) + ret0, _ := ret[0].(messagequeue.Message) return ret0 } diff --git a/extension/queue/mock/publisher_mock.go b/extension/messagequeue/mock/publisher_mock.go similarity index 93% rename from extension/queue/mock/publisher_mock.go rename to extension/messagequeue/mock/publisher_mock.go index 213d3e2b..36e97108 100644 --- a/extension/queue/mock/publisher_mock.go +++ b/extension/messagequeue/mock/publisher_mock.go @@ -13,7 +13,7 @@ import ( context "context" reflect "reflect" - queue "github.com/uber/submitqueue/entity/queue" + messagequeue "github.com/uber/submitqueue/entity/messagequeue" gomock "go.uber.org/mock/gomock" ) @@ -56,7 +56,7 @@ func (mr *MockPublisherMockRecorder) Close() *gomock.Call { } // Publish mocks base method. -func (m *MockPublisher) Publish(ctx context.Context, topic string, message queue.Message) error { +func (m *MockPublisher) Publish(ctx context.Context, topic string, message messagequeue.Message) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Publish", ctx, topic, message) ret0, _ := ret[0].(error) @@ -70,7 +70,7 @@ func (mr *MockPublisherMockRecorder) Publish(ctx, topic, message any) *gomock.Ca } // PublishAfter mocks base method. -func (m *MockPublisher) PublishAfter(ctx context.Context, topic string, message queue.Message, delayMs int64) error { +func (m *MockPublisher) PublishAfter(ctx context.Context, topic string, message messagequeue.Message, delayMs int64) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "PublishAfter", ctx, topic, message, delayMs) ret0, _ := ret[0].(error) diff --git a/extension/queue/mock/queue_mock.go b/extension/messagequeue/mock/queue_mock.go similarity index 88% rename from extension/queue/mock/queue_mock.go rename to extension/messagequeue/mock/queue_mock.go index 17915a4a..6ee84c44 100644 --- a/extension/queue/mock/queue_mock.go +++ b/extension/messagequeue/mock/queue_mock.go @@ -12,7 +12,7 @@ package mock import ( reflect "reflect" - queue "github.com/uber/submitqueue/extension/queue" + messagequeue "github.com/uber/submitqueue/extension/messagequeue" gomock "go.uber.org/mock/gomock" ) @@ -55,10 +55,10 @@ func (mr *MockQueueMockRecorder) Close() *gomock.Call { } // Publisher mocks base method. -func (m *MockQueue) Publisher() queue.Publisher { +func (m *MockQueue) Publisher() messagequeue.Publisher { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Publisher") - ret0, _ := ret[0].(queue.Publisher) + ret0, _ := ret[0].(messagequeue.Publisher) return ret0 } @@ -69,10 +69,10 @@ func (mr *MockQueueMockRecorder) Publisher() *gomock.Call { } // Subscriber mocks base method. -func (m *MockQueue) Subscriber() queue.Subscriber { +func (m *MockQueue) Subscriber() messagequeue.Subscriber { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Subscriber") - ret0, _ := ret[0].(queue.Subscriber) + ret0, _ := ret[0].(messagequeue.Subscriber) return ret0 } diff --git a/extension/queue/mock/subscriber_mock.go b/extension/messagequeue/mock/subscriber_mock.go similarity index 90% rename from extension/queue/mock/subscriber_mock.go rename to extension/messagequeue/mock/subscriber_mock.go index 88ccf907..8443a868 100644 --- a/extension/queue/mock/subscriber_mock.go +++ b/extension/messagequeue/mock/subscriber_mock.go @@ -13,7 +13,7 @@ import ( context "context" reflect "reflect" - queue "github.com/uber/submitqueue/extension/queue" + messagequeue "github.com/uber/submitqueue/extension/messagequeue" gomock "go.uber.org/mock/gomock" ) @@ -56,10 +56,10 @@ func (mr *MockSubscriberMockRecorder) Close() *gomock.Call { } // Subscribe mocks base method. -func (m *MockSubscriber) Subscribe(ctx context.Context, topic string, config queue.SubscriptionConfig) (<-chan queue.Delivery, error) { +func (m *MockSubscriber) Subscribe(ctx context.Context, topic string, config messagequeue.SubscriptionConfig) (<-chan messagequeue.Delivery, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Subscribe", ctx, topic, config) - ret0, _ := ret[0].(<-chan queue.Delivery) + ret0, _ := ret[0].(<-chan messagequeue.Delivery) ret1, _ := ret[1].(error) return ret0, ret1 } diff --git a/extension/queue/mysql/BUILD.bazel b/extension/messagequeue/mysql/BUILD.bazel similarity index 85% rename from extension/queue/mysql/BUILD.bazel rename to extension/messagequeue/mysql/BUILD.bazel index bc33cf49..581533bc 100644 --- a/extension/queue/mysql/BUILD.bazel +++ b/extension/messagequeue/mysql/BUILD.bazel @@ -16,12 +16,12 @@ go_library( "subscriber.go", "subscriber_heartbeat_store.go", ], - importpath = "github.com/uber/submitqueue/extension/queue/mysql", + importpath = "github.com/uber/submitqueue/extension/messagequeue/mysql", visibility = ["//visibility:public"], deps = [ "//core/metrics", - "//entity/queue", - "//extension/queue", + "//entity/messagequeue", + "//extension/messagequeue", "@com_github_uber_go_tally_v4//:tally", "@org_uber_go_mock//gomock", "@org_uber_go_zap//:zap", @@ -42,8 +42,8 @@ go_test( ], embed = [":mysql"], deps = [ - "//entity/queue", - "//extension/queue", + "//entity/messagequeue", + "//extension/messagequeue", "@com_github_data_dog_go_sqlmock//:go-sqlmock", "@com_github_stretchr_testify//assert", "@com_github_stretchr_testify//require", diff --git a/extension/queue/mysql/README.md b/extension/messagequeue/mysql/README.md similarity index 100% rename from extension/queue/mysql/README.md rename to extension/messagequeue/mysql/README.md diff --git a/extension/queue/mysql/constants.go b/extension/messagequeue/mysql/constants.go similarity index 100% rename from extension/queue/mysql/constants.go rename to extension/messagequeue/mysql/constants.go diff --git a/extension/queue/mysql/ctl/BUILD.bazel b/extension/messagequeue/mysql/ctl/BUILD.bazel similarity index 75% rename from extension/queue/mysql/ctl/BUILD.bazel rename to extension/messagequeue/mysql/ctl/BUILD.bazel index e9bf2f4b..10a02bda 100644 --- a/extension/queue/mysql/ctl/BUILD.bazel +++ b/extension/messagequeue/mysql/ctl/BUILD.bazel @@ -6,10 +6,10 @@ go_library( "commands.go", "main.go", ], - importpath = "github.com/uber/submitqueue/extension/queue/mysql/ctl", + importpath = "github.com/uber/submitqueue/extension/messagequeue/mysql/ctl", visibility = ["//visibility:private"], deps = [ - "//extension/queue/mysql/ctl/lib", + "//extension/messagequeue/mysql/ctl/lib", "@com_github_go_sql_driver_mysql//:mysql", "@com_github_spf13_cobra//:cobra", ], diff --git a/extension/queue/mysql/ctl/README.md b/extension/messagequeue/mysql/ctl/README.md similarity index 100% rename from extension/queue/mysql/ctl/README.md rename to extension/messagequeue/mysql/ctl/README.md diff --git a/extension/queue/mysql/ctl/commands.go b/extension/messagequeue/mysql/ctl/commands.go similarity index 99% rename from extension/queue/mysql/ctl/commands.go rename to extension/messagequeue/mysql/ctl/commands.go index 31e2ecb0..7411573a 100644 --- a/extension/queue/mysql/ctl/commands.go +++ b/extension/messagequeue/mysql/ctl/commands.go @@ -23,7 +23,7 @@ import ( "strings" "github.com/spf13/cobra" - "github.com/uber/submitqueue/extension/queue/mysql/ctl/lib" + "github.com/uber/submitqueue/extension/messagequeue/mysql/ctl/lib" ) // confirmAction prompts the user for confirmation unless --no-interactive is set. diff --git a/extension/queue/mysql/ctl/lib/BUILD.bazel b/extension/messagequeue/mysql/ctl/lib/BUILD.bazel similarity index 77% rename from extension/queue/mysql/ctl/lib/BUILD.bazel rename to extension/messagequeue/mysql/ctl/lib/BUILD.bazel index d7e7b1ad..4f7da56d 100644 --- a/extension/queue/mysql/ctl/lib/BUILD.bazel +++ b/extension/messagequeue/mysql/ctl/lib/BUILD.bazel @@ -6,9 +6,9 @@ go_library( "admin.go", "format.go", ], - importpath = "github.com/uber/submitqueue/extension/queue/mysql/ctl/lib", + importpath = "github.com/uber/submitqueue/extension/messagequeue/mysql/ctl/lib", visibility = ["//visibility:public"], - deps = ["//extension/queue/mysql"], + deps = ["//extension/messagequeue/mysql"], ) go_test( diff --git a/extension/queue/mysql/ctl/lib/admin.go b/extension/messagequeue/mysql/ctl/lib/admin.go similarity index 99% rename from extension/queue/mysql/ctl/lib/admin.go rename to extension/messagequeue/mysql/ctl/lib/admin.go index a3d6edee..c8e3f26a 100644 --- a/extension/queue/mysql/ctl/lib/admin.go +++ b/extension/messagequeue/mysql/ctl/lib/admin.go @@ -21,7 +21,7 @@ import ( "fmt" "time" - mysql "github.com/uber/submitqueue/extension/queue/mysql" + mysql "github.com/uber/submitqueue/extension/messagequeue/mysql" ) // AdminStore provides read-only inspection and targeted admin mutations diff --git a/extension/queue/mysql/ctl/lib/admin_test.go b/extension/messagequeue/mysql/ctl/lib/admin_test.go similarity index 100% rename from extension/queue/mysql/ctl/lib/admin_test.go rename to extension/messagequeue/mysql/ctl/lib/admin_test.go diff --git a/extension/queue/mysql/ctl/lib/format.go b/extension/messagequeue/mysql/ctl/lib/format.go similarity index 100% rename from extension/queue/mysql/ctl/lib/format.go rename to extension/messagequeue/mysql/ctl/lib/format.go diff --git a/extension/queue/mysql/ctl/main.go b/extension/messagequeue/mysql/ctl/main.go similarity index 100% rename from extension/queue/mysql/ctl/main.go rename to extension/messagequeue/mysql/ctl/main.go diff --git a/extension/queue/mysql/delivery_state_store.go b/extension/messagequeue/mysql/delivery_state_store.go similarity index 100% rename from extension/queue/mysql/delivery_state_store.go rename to extension/messagequeue/mysql/delivery_state_store.go diff --git a/extension/queue/mysql/delivery_state_store_test.go b/extension/messagequeue/mysql/delivery_state_store_test.go similarity index 100% rename from extension/queue/mysql/delivery_state_store_test.go rename to extension/messagequeue/mysql/delivery_state_store_test.go diff --git a/extension/queue/mysql/errors.go b/extension/messagequeue/mysql/errors.go similarity index 100% rename from extension/queue/mysql/errors.go rename to extension/messagequeue/mysql/errors.go diff --git a/extension/queue/mysql/message_store.go b/extension/messagequeue/mysql/message_store.go similarity index 98% rename from extension/queue/mysql/message_store.go rename to extension/messagequeue/mysql/message_store.go index fa290255..db47dd11 100644 --- a/extension/queue/mysql/message_store.go +++ b/extension/messagequeue/mysql/message_store.go @@ -25,7 +25,7 @@ import ( "go.uber.org/zap" "github.com/uber/submitqueue/core/metrics" - "github.com/uber/submitqueue/entity/queue" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" ) // sqlmessageStore is the SQL implementation of messageStore @@ -46,7 +46,7 @@ func newMessageStore(db *sql.DB, logger *zap.SugaredLogger, scope tally.Scope) m // Insert inserts messages into the messages table with no visibility delay. // Equivalent to InsertDelayed with visibleAfterMs == 0. -func (s *sqlmessageStore) Insert(ctx context.Context, topic string, messages []queue.Message) error { +func (s *sqlmessageStore) Insert(ctx context.Context, topic string, messages []entityqueue.Message) error { return s.InsertDelayed(ctx, topic, messages, 0) } @@ -61,7 +61,7 @@ func (s *sqlmessageStore) Insert(ctx context.Context, topic string, messages []q // idempotent publishes") and lets callers safely retry publishes (e.g. a // second Cancel RPC for the same request) without surfacing 1062 duplicate-key // errors. -func (s *sqlmessageStore) InsertDelayed(ctx context.Context, topic string, messages []queue.Message, visibleAfterMs int64) (retErr error) { +func (s *sqlmessageStore) InsertDelayed(ctx context.Context, topic string, messages []entityqueue.Message, visibleAfterMs int64) (retErr error) { op := metrics.Begin(s.scope, "insert", metrics.NewTag("topic", topic)) defer func() { op.Complete(retErr) }() diff --git a/extension/queue/mysql/message_store_test.go b/extension/messagequeue/mysql/message_store_test.go similarity index 93% rename from extension/queue/mysql/message_store_test.go rename to extension/messagequeue/mysql/message_store_test.go index a1d52d2c..a800a62b 100644 --- a/extension/queue/mysql/message_store_test.go +++ b/extension/messagequeue/mysql/message_store_test.go @@ -27,7 +27,7 @@ import ( "github.com/uber-go/tally/v4" "go.uber.org/zap/zaptest" - "github.com/uber/submitqueue/entity/queue" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" ) // testMetrics returns a test metrics scope for use in tests @@ -49,17 +49,17 @@ func setupmessageStoreTest(t *testing.T) (*sql.DB, sqlmock.Sqlmock, messageStore func TestMessageStore_Insert(t *testing.T) { tests := []struct { name string - messages []queue.Message - setup func(mock sqlmock.Sqlmock, messages []queue.Message) + messages []entityqueue.Message + setup func(mock sqlmock.Sqlmock, messages []entityqueue.Message) wantErr bool }{ { name: "successful insert with multiple messages", - messages: []queue.Message{ + messages: []entityqueue.Message{ {ID: "msg1", Payload: []byte("payload1"), PartitionKey: "part1", PublishedAt: time.Now().UnixMilli()}, {ID: "msg2", Payload: []byte("payload2"), PartitionKey: "part1", PublishedAt: time.Now().UnixMilli()}, }, - setup: func(mock sqlmock.Sqlmock, messages []queue.Message) { + setup: func(mock sqlmock.Sqlmock, messages []entityqueue.Message) { mock.ExpectBegin() mock.ExpectPrepare("INSERT INTO queue_messages") for range messages { @@ -72,8 +72,8 @@ func TestMessageStore_Insert(t *testing.T) { }, { name: "empty messages should succeed", - messages: []queue.Message{}, - setup: func(mock sqlmock.Sqlmock, messages []queue.Message) {}, + messages: []entityqueue.Message{}, + setup: func(mock sqlmock.Sqlmock, messages []entityqueue.Message) {}, wantErr: false, }, { @@ -81,10 +81,10 @@ func TestMessageStore_Insert(t *testing.T) { // must succeed silently. sqlmock returns 0 affected rows to simulate // MySQL's ON DUPLICATE KEY UPDATE swallowing the unique-key collision. name: "duplicate publish is idempotent", - messages: []queue.Message{ + messages: []entityqueue.Message{ {ID: "msg-dup", Payload: []byte("payload"), PartitionKey: "part1", PublishedAt: time.Now().UnixMilli()}, }, - setup: func(mock sqlmock.Sqlmock, messages []queue.Message) { + setup: func(mock sqlmock.Sqlmock, messages []entityqueue.Message) { mock.ExpectBegin() mock.ExpectPrepare("INSERT INTO queue_messages") mock.ExpectExec("INSERT INTO queue_messages"). @@ -189,7 +189,7 @@ func TestMessageStore_InsertDelayed(t *testing.T) { ctx := context.Background() visibleAfter := time.Now().UnixMilli() + 5000 - msg := queue.Message{ID: "msg-delayed", Payload: []byte("p"), PartitionKey: "part1", PublishedAt: time.Now().UnixMilli()} + msg := entityqueue.Message{ID: "msg-delayed", Payload: []byte("p"), PartitionKey: "part1", PublishedAt: time.Now().UnixMilli()} mock.ExpectBegin() mock.ExpectPrepare("INSERT INTO queue_messages") @@ -198,7 +198,7 @@ func TestMessageStore_InsertDelayed(t *testing.T) { WillReturnResult(sqlmock.NewResult(1, 1)) mock.ExpectCommit() - err := store.InsertDelayed(ctx, "test_topic", []queue.Message{msg}, visibleAfter) + err := store.InsertDelayed(ctx, "test_topic", []entityqueue.Message{msg}, visibleAfter) require.NoError(t, err) require.NoError(t, mock.ExpectationsWereMet()) } diff --git a/extension/queue/mysql/mock_stores.go b/extension/messagequeue/mysql/mock_stores.go similarity index 99% rename from extension/queue/mysql/mock_stores.go rename to extension/messagequeue/mysql/mock_stores.go index e2f9ed36..bd0595ad 100644 --- a/extension/queue/mysql/mock_stores.go +++ b/extension/messagequeue/mysql/mock_stores.go @@ -13,7 +13,7 @@ import ( context "context" reflect "reflect" - queue "github.com/uber/submitqueue/entity/queue" + messagequeue "github.com/uber/submitqueue/entity/messagequeue" gomock "go.uber.org/mock/gomock" ) @@ -101,7 +101,7 @@ func (mr *MockmessageStoreMockRecorder) GetOffsetsAbove(ctx, topic, partitionKey } // Insert mocks base method. -func (m *MockmessageStore) Insert(ctx context.Context, topic string, messages []queue.Message) error { +func (m *MockmessageStore) Insert(ctx context.Context, topic string, messages []messagequeue.Message) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Insert", ctx, topic, messages) ret0, _ := ret[0].(error) @@ -115,7 +115,7 @@ func (mr *MockmessageStoreMockRecorder) Insert(ctx, topic, messages any) *gomock } // InsertDelayed mocks base method. -func (m *MockmessageStore) InsertDelayed(ctx context.Context, topic string, messages []queue.Message, visibleAfterMs int64) error { +func (m *MockmessageStore) InsertDelayed(ctx context.Context, topic string, messages []messagequeue.Message, visibleAfterMs int64) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "InsertDelayed", ctx, topic, messages, visibleAfterMs) ret0, _ := ret[0].(error) diff --git a/extension/queue/mysql/offset_store.go b/extension/messagequeue/mysql/offset_store.go similarity index 100% rename from extension/queue/mysql/offset_store.go rename to extension/messagequeue/mysql/offset_store.go diff --git a/extension/queue/mysql/offset_store_test.go b/extension/messagequeue/mysql/offset_store_test.go similarity index 100% rename from extension/queue/mysql/offset_store_test.go rename to extension/messagequeue/mysql/offset_store_test.go diff --git a/extension/queue/mysql/partition_lease_store.go b/extension/messagequeue/mysql/partition_lease_store.go similarity index 100% rename from extension/queue/mysql/partition_lease_store.go rename to extension/messagequeue/mysql/partition_lease_store.go diff --git a/extension/queue/mysql/partition_lease_store_test.go b/extension/messagequeue/mysql/partition_lease_store_test.go similarity index 100% rename from extension/queue/mysql/partition_lease_store_test.go rename to extension/messagequeue/mysql/partition_lease_store_test.go diff --git a/extension/queue/mysql/publisher.go b/extension/messagequeue/mysql/publisher.go similarity index 87% rename from extension/queue/mysql/publisher.go rename to extension/messagequeue/mysql/publisher.go index c487ed01..47dd2fba 100644 --- a/extension/queue/mysql/publisher.go +++ b/extension/messagequeue/mysql/publisher.go @@ -24,7 +24,7 @@ import ( "go.uber.org/zap" "github.com/uber/submitqueue/core/metrics" - "github.com/uber/submitqueue/entity/queue" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" ) type publisher struct { @@ -45,7 +45,7 @@ func NewPublisher(logger *zap.SugaredLogger, scope tally.Scope, messageStore mes } // Publish sends a message to the specified topic -func (p *publisher) Publish(ctx context.Context, topic string, message queue.Message) (retErr error) { +func (p *publisher) Publish(ctx context.Context, topic string, message entityqueue.Message) (retErr error) { op := metrics.Begin(p.scope, "publish", metrics.NewTag("topic", topic)) defer func() { op.Complete(retErr) }() @@ -58,7 +58,7 @@ func (p *publisher) Publish(ctx context.Context, topic string, message queue.Mes return ErrPublisherClosed } - if err := p.messageStore.Insert(ctx, topic, []queue.Message{message}); err != nil { + if err := p.messageStore.Insert(ctx, topic, []entityqueue.Message{message}); err != nil { return fmt.Errorf("publish message store insert error: %w", err) } @@ -71,7 +71,7 @@ func (p *publisher) Publish(ctx context.Context, topic string, message queue.Mes // after delayMs from now. The message is inserted with visible_after = // now + delayMs; FetchByOffset skips it until that timestamp. // delayMs <= 0 is equivalent to Publish. -func (p *publisher) PublishAfter(ctx context.Context, topic string, message queue.Message, delayMs int64) (retErr error) { +func (p *publisher) PublishAfter(ctx context.Context, topic string, message entityqueue.Message, delayMs int64) (retErr error) { op := metrics.Begin(p.scope, "publish_after", metrics.NewTag("topic", topic)) defer func() { op.Complete(retErr) }() @@ -88,7 +88,7 @@ func (p *publisher) PublishAfter(ctx context.Context, topic string, message queu visibleAfter = time.Now().UnixMilli() + delayMs } - if err := p.messageStore.InsertDelayed(ctx, topic, []queue.Message{message}, visibleAfter); err != nil { + if err := p.messageStore.InsertDelayed(ctx, topic, []entityqueue.Message{message}, visibleAfter); err != nil { return fmt.Errorf("publish_after message store insert error: %w", err) } diff --git a/extension/queue/mysql/publisher_test.go b/extension/messagequeue/mysql/publisher_test.go similarity index 92% rename from extension/queue/mysql/publisher_test.go rename to extension/messagequeue/mysql/publisher_test.go index b4f46cda..41b28826 100644 --- a/extension/queue/mysql/publisher_test.go +++ b/extension/messagequeue/mysql/publisher_test.go @@ -25,8 +25,8 @@ import ( "go.uber.org/mock/gomock" "go.uber.org/zap/zaptest" - "github.com/uber/submitqueue/entity/queue" - extqueue "github.com/uber/submitqueue/extension/queue" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" + extqueue "github.com/uber/submitqueue/extension/messagequeue" // mocks in same package ) @@ -46,14 +46,14 @@ func TestPublisher_Publish(t *testing.T) { tests := []struct { name string topic string - messages []queue.Message + messages []entityqueue.Message wantErr bool setupMock func(*MockmessageStore) }{ { name: "publish single message", topic: "test_topic", - messages: []queue.Message{ + messages: []entityqueue.Message{ {ID: "msg1", Payload: []byte("payload1"), PartitionKey: "part1", PublishedAt: fixedTimestamp}, }, wantErr: false, @@ -64,7 +64,7 @@ func TestPublisher_Publish(t *testing.T) { { name: "publish multiple messages", topic: "multi_topic", - messages: []queue.Message{ + messages: []entityqueue.Message{ {ID: "msg1", Payload: []byte("p1"), PartitionKey: "part1", PublishedAt: fixedTimestamp}, {ID: "msg2", Payload: []byte("p2"), PartitionKey: "part1", PublishedAt: fixedTimestamp}, {ID: "msg3", Payload: []byte("p3"), PartitionKey: "part2", PublishedAt: fixedTimestamp}, @@ -77,7 +77,7 @@ func TestPublisher_Publish(t *testing.T) { { name: "publish empty messages is no-op", topic: "empty_topic", - messages: []queue.Message{}, + messages: []entityqueue.Message{}, wantErr: false, setupMock: func(m *MockmessageStore) { // No Insert expected @@ -86,7 +86,7 @@ func TestPublisher_Publish(t *testing.T) { { name: "publish with metadata", topic: "metadata_topic", - messages: []queue.Message{ + messages: []entityqueue.Message{ { ID: "msg_meta", Payload: []byte("payload"), @@ -103,7 +103,7 @@ func TestPublisher_Publish(t *testing.T) { { name: "publish with valid topic name - hyphens", topic: "topic-with-dash", - messages: []queue.Message{ + messages: []entityqueue.Message{ {ID: "msg1", Payload: []byte("p"), PartitionKey: "part1", PublishedAt: fixedTimestamp}, }, wantErr: false, @@ -154,7 +154,7 @@ func TestPublisher_PublishAfterClose(t *testing.T) { require.NoError(t, err) // Try to publish after close - msg := queue.NewMessage("msg1", []byte("payload"), "part1", nil) + msg := entityqueue.NewMessage("msg1", []byte("payload"), "part1", nil) err = pub.Publish(ctx, "test_topic", msg) require.Error(t, err) require.True(t, errors.Is(err, ErrPublisherClosed)) @@ -200,7 +200,7 @@ func TestPublisher_PublishAfter(t *testing.T) { pub := setupPublisherTest(t, mockStore) - msg := queue.NewMessage("msg-delayed", []byte("p"), "part1", nil) + msg := entityqueue.NewMessage("msg-delayed", []byte("p"), "part1", nil) err := pub.PublishAfter(context.Background(), "test_topic", msg, tt.delayMs) require.NoError(t, err) }) @@ -216,7 +216,7 @@ func TestPublisher_PublishAfterClosed(t *testing.T) { require.NoError(t, pub.Close()) - msg := queue.NewMessage("msg1", []byte("p"), "part1", nil) + msg := entityqueue.NewMessage("msg1", []byte("p"), "part1", nil) err := pub.PublishAfter(context.Background(), "test_topic", msg, 1000) require.Error(t, err) require.True(t, errors.Is(err, ErrPublisherClosed)) @@ -251,7 +251,7 @@ func TestPublisher_PublishMetrics(t *testing.T) { topic := "metrics_test" // Publish some messages - messages := []queue.Message{ + messages := []entityqueue.Message{ {ID: "msg1", Payload: []byte("p1"), PartitionKey: "part1", PublishedAt: fixedTimestamp}, {ID: "msg2", Payload: []byte("p2"), PartitionKey: "part1", PublishedAt: fixedTimestamp}, } @@ -285,7 +285,7 @@ func TestPublisher_ConcurrentPublish(t *testing.T) { for i := 0; i < numGoroutines; i++ { go func(id int) { for j := 0; j < messagesPerGoroutine; j++ { - msg := queue.Message{ + msg := entityqueue.Message{ ID: fmt.Sprintf("msg_%d_%d", id, j), Payload: []byte(fmt.Sprintf("payload_%d_%d", id, j)), PartitionKey: fmt.Sprintf("part_%d", id), @@ -316,7 +316,7 @@ func TestPublisher_PublishContextCancellation(t *testing.T) { ctx, cancel := context.WithCancel(context.Background()) cancel() - msg := queue.NewMessage("msg1", []byte("payload"), "part1", nil) + msg := entityqueue.NewMessage("msg1", []byte("payload"), "part1", nil) // Should fail with context cancelled error err := pub.Publish(ctx, "test_topic", msg) diff --git a/extension/queue/mysql/schema/BUILD.bazel b/extension/messagequeue/mysql/schema/BUILD.bazel similarity index 100% rename from extension/queue/mysql/schema/BUILD.bazel rename to extension/messagequeue/mysql/schema/BUILD.bazel diff --git a/extension/queue/mysql/schema/queue_delivery_state.sql b/extension/messagequeue/mysql/schema/queue_delivery_state.sql similarity index 100% rename from extension/queue/mysql/schema/queue_delivery_state.sql rename to extension/messagequeue/mysql/schema/queue_delivery_state.sql diff --git a/extension/queue/mysql/schema/queue_messages.sql b/extension/messagequeue/mysql/schema/queue_messages.sql similarity index 100% rename from extension/queue/mysql/schema/queue_messages.sql rename to extension/messagequeue/mysql/schema/queue_messages.sql diff --git a/extension/queue/mysql/schema/queue_offsets.sql b/extension/messagequeue/mysql/schema/queue_offsets.sql similarity index 100% rename from extension/queue/mysql/schema/queue_offsets.sql rename to extension/messagequeue/mysql/schema/queue_offsets.sql diff --git a/extension/queue/mysql/schema/queue_partition_leases.sql b/extension/messagequeue/mysql/schema/queue_partition_leases.sql similarity index 100% rename from extension/queue/mysql/schema/queue_partition_leases.sql rename to extension/messagequeue/mysql/schema/queue_partition_leases.sql diff --git a/extension/queue/mysql/schema/queue_subscriber_heartbeats.sql b/extension/messagequeue/mysql/schema/queue_subscriber_heartbeats.sql similarity index 100% rename from extension/queue/mysql/schema/queue_subscriber_heartbeats.sql rename to extension/messagequeue/mysql/schema/queue_subscriber_heartbeats.sql diff --git a/extension/queue/mysql/sql.go b/extension/messagequeue/mysql/sql.go similarity index 91% rename from extension/queue/mysql/sql.go rename to extension/messagequeue/mysql/sql.go index 12d46649..385d4947 100644 --- a/extension/queue/mysql/sql.go +++ b/extension/messagequeue/mysql/sql.go @@ -23,12 +23,12 @@ import ( "github.com/uber-go/tally/v4" "go.uber.org/zap" - "github.com/uber/submitqueue/extension/queue" + extqueue "github.com/uber/submitqueue/extension/messagequeue" ) type queueImpl struct { - publisher queue.Publisher - subscriber queue.Subscriber + publisher extqueue.Publisher + subscriber extqueue.Subscriber closed bool } @@ -49,7 +49,7 @@ type Params struct { } // NewQueue creates a new SQL-based queue -func NewQueue(params Params) (queue.Queue, error) { +func NewQueue(params Params) (extqueue.Queue, error) { // Test connection if err := params.DB.Ping(); err != nil { return nil, fmt.Errorf("failed to ping database: %w", err) @@ -93,12 +93,12 @@ func NewQueue(params Params) (queue.Queue, error) { } // Publisher returns a Publisher instance -func (q *queueImpl) Publisher() queue.Publisher { +func (q *queueImpl) Publisher() extqueue.Publisher { return q.publisher } // Subscriber returns a Subscriber instance -func (q *queueImpl) Subscriber() queue.Subscriber { +func (q *queueImpl) Subscriber() extqueue.Subscriber { return q.subscriber } diff --git a/extension/queue/mysql/sql_test.go b/extension/messagequeue/mysql/sql_test.go similarity index 95% rename from extension/queue/mysql/sql_test.go rename to extension/messagequeue/mysql/sql_test.go index 69cd4225..e08a3558 100644 --- a/extension/queue/mysql/sql_test.go +++ b/extension/messagequeue/mysql/sql_test.go @@ -24,7 +24,7 @@ import ( "github.com/uber-go/tally/v4" "go.uber.org/zap/zaptest" - "github.com/uber/submitqueue/extension/queue" + extqueue "github.com/uber/submitqueue/extension/messagequeue" ) func TestNewQueue(t *testing.T) { @@ -127,31 +127,31 @@ func TestQueue_Subscriber(t *testing.T) { func TestQueue_Close(t *testing.T) { tests := []struct { name string - setupQueue func(t *testing.T, q queue.Queue) + setupQueue func(t *testing.T, q extqueue.Queue) wantErr bool }{ { name: "close without creating publisher or subscriber", - setupQueue: func(t *testing.T, q queue.Queue) {}, + setupQueue: func(t *testing.T, q extqueue.Queue) {}, wantErr: false, }, { name: "close after creating publisher", - setupQueue: func(t *testing.T, q queue.Queue) { + setupQueue: func(t *testing.T, q extqueue.Queue) { _ = q.Publisher() }, wantErr: false, }, { name: "close after creating subscriber", - setupQueue: func(t *testing.T, q queue.Queue) { + setupQueue: func(t *testing.T, q extqueue.Queue) { _ = q.Subscriber() }, wantErr: false, }, { name: "close after creating both publisher and subscriber", - setupQueue: func(t *testing.T, q queue.Queue) { + setupQueue: func(t *testing.T, q extqueue.Queue) { _ = q.Publisher() _ = q.Subscriber() }, diff --git a/extension/queue/mysql/stores.go b/extension/messagequeue/mysql/stores.go similarity index 97% rename from extension/queue/mysql/stores.go rename to extension/messagequeue/mysql/stores.go index d3ea34c0..47bdc48a 100644 --- a/extension/queue/mysql/stores.go +++ b/extension/messagequeue/mysql/stores.go @@ -19,7 +19,7 @@ package mysql import ( "context" - "github.com/uber/submitqueue/entity/queue" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" ) const ( @@ -58,12 +58,12 @@ type messageRow struct { // messageStore handles message table operations (internal use only) type messageStore interface { // Insert inserts messages into the topic table. - Insert(ctx context.Context, topic string, messages []queue.Message) error + Insert(ctx context.Context, topic string, messages []entityqueue.Message) error // InsertDelayed inserts messages whose delivery is deferred until // visibleAfterMs (epoch milliseconds). 0 means immediately visible // and is equivalent to Insert. - InsertDelayed(ctx context.Context, topic string, messages []queue.Message, visibleAfterMs int64) error + InsertDelayed(ctx context.Context, topic string, messages []entityqueue.Message, visibleAfterMs int64) error // Delete deletes a message by topic, partition key, and ID Delete(ctx context.Context, topic string, partitionKey string, messageID string) error diff --git a/extension/queue/mysql/subscriber.go b/extension/messagequeue/mysql/subscriber.go similarity index 99% rename from extension/queue/mysql/subscriber.go rename to extension/messagequeue/mysql/subscriber.go index 4c674a5c..b9106251 100644 --- a/extension/queue/mysql/subscriber.go +++ b/extension/messagequeue/mysql/subscriber.go @@ -26,8 +26,8 @@ import ( "go.uber.org/zap" "github.com/uber/submitqueue/core/metrics" - "github.com/uber/submitqueue/entity/queue" - extqueue "github.com/uber/submitqueue/extension/queue" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" + extqueue "github.com/uber/submitqueue/extension/messagequeue" ) const ( @@ -140,7 +140,7 @@ type partitionWorker struct { // sqlDelivery implements extqueue.Delivery for SQL queue type sqlDelivery struct { - msg queue.Message + msg entityqueue.Message deliveryID string attempt int receivedAt int64 @@ -163,7 +163,7 @@ type sqlDelivery struct { } func newSQLDelivery( - msg queue.Message, + msg entityqueue.Message, deliveryID string, attempt int, metadata map[string]string, @@ -193,7 +193,7 @@ func newSQLDelivery( } // Message implements extqueue.Delivery.Message -func (d *sqlDelivery) Message() queue.Message { +func (d *sqlDelivery) Message() entityqueue.Message { return d.msg } @@ -830,7 +830,7 @@ func (w *partitionWorker) pollAndDeliver(ctx context.Context) error { } // Create message (value type) - msg := queue.NewMessage(row.ID, row.Payload, row.PartitionKey, row.Metadata) + msg := entityqueue.NewMessage(row.ID, row.Payload, row.PartitionKey, row.Metadata) msg.PublishedAt = row.PublishedAt // Calculate message age for metrics diff --git a/extension/queue/mysql/subscriber_heartbeat_store.go b/extension/messagequeue/mysql/subscriber_heartbeat_store.go similarity index 100% rename from extension/queue/mysql/subscriber_heartbeat_store.go rename to extension/messagequeue/mysql/subscriber_heartbeat_store.go diff --git a/extension/queue/mysql/subscriber_heartbeat_store_test.go b/extension/messagequeue/mysql/subscriber_heartbeat_store_test.go similarity index 100% rename from extension/queue/mysql/subscriber_heartbeat_store_test.go rename to extension/messagequeue/mysql/subscriber_heartbeat_store_test.go diff --git a/extension/queue/mysql/subscriber_test.go b/extension/messagequeue/mysql/subscriber_test.go similarity index 98% rename from extension/queue/mysql/subscriber_test.go rename to extension/messagequeue/mysql/subscriber_test.go index dd36359d..7c68c48e 100644 --- a/extension/queue/mysql/subscriber_test.go +++ b/extension/messagequeue/mysql/subscriber_test.go @@ -27,8 +27,8 @@ import ( "go.uber.org/mock/gomock" "go.uber.org/zap/zaptest" - "github.com/uber/submitqueue/entity/queue" - extqueue "github.com/uber/submitqueue/extension/queue" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" + extqueue "github.com/uber/submitqueue/extension/messagequeue" ) func testSubscriptionConfig() extqueue.SubscriptionConfig { @@ -162,7 +162,7 @@ func TestSQLDelivery_Ack(t *testing.T) { mockDeliveryState, ) - msg := queue.NewMessage("msg-1", []byte("payload"), "part-1", nil) + msg := entityqueue.NewMessage("msg-1", []byte("payload"), "part-1", nil) d := newSQLDelivery( msg, "1", 1, nil, sub, "test_topic", "part-1", 100, "msg-1", "test-group", @@ -246,7 +246,7 @@ func TestSQLDelivery_Reject(t *testing.T) { mockDeliveryState, ) - msg := queue.NewMessage("msg-1", []byte("payload"), "part-1", nil) + msg := entityqueue.NewMessage("msg-1", []byte("payload"), "part-1", nil) dlqConfig := extqueue.DLQConfig{ Enabled: tt.dlqEnabled, TopicSuffix: "_dlq", diff --git a/extension/queue/publisher.go b/extension/messagequeue/publisher.go similarity index 85% rename from extension/queue/publisher.go rename to extension/messagequeue/publisher.go index 959b1531..5a9ef59c 100644 --- a/extension/queue/publisher.go +++ b/extension/messagequeue/publisher.go @@ -12,21 +12,21 @@ // See the License for the specific language governing permissions and // limitations under the License. -package queue +package messagequeue //go:generate mockgen -source=publisher.go -destination=mock/publisher_mock.go -package=mock import ( "context" - "github.com/uber/submitqueue/entity/queue" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" ) // Publisher publishes messages to topics. // Implementations must be thread-safe. type Publisher interface { // Publish sends a message to the specified topic. - Publish(ctx context.Context, topic string, message queue.Message) error + Publish(ctx context.Context, topic string, message entityqueue.Message) error // PublishAfter sends a message that becomes visible to subscribers only // after delayMs from now. It is a fresh publish — not a redelivery — so @@ -37,7 +37,7 @@ type Publisher interface { // poll cycles for a single key). Use Nack with a delay for "this // delivery failed, try again" — the two signals stay separate so // retry_count and DLQ behaviour remain meaningful. - PublishAfter(ctx context.Context, topic string, message queue.Message, delayMs int64) error + PublishAfter(ctx context.Context, topic string, message entityqueue.Message, delayMs int64) error // Close gracefully shuts down the publisher, flushing pending messages. Close() error diff --git a/extension/queue/queue.go b/extension/messagequeue/queue.go similarity index 98% rename from extension/queue/queue.go rename to extension/messagequeue/queue.go index e03eb29d..57e88c6e 100644 --- a/extension/queue/queue.go +++ b/extension/messagequeue/queue.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package queue +package messagequeue //go:generate mockgen -source=queue.go -destination=mock/queue_mock.go -package=mock diff --git a/extension/queue/subscriber.go b/extension/messagequeue/subscriber.go similarity index 98% rename from extension/queue/subscriber.go rename to extension/messagequeue/subscriber.go index d629d127..da2472b0 100644 --- a/extension/queue/subscriber.go +++ b/extension/messagequeue/subscriber.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package queue +package messagequeue //go:generate mockgen -source=subscriber.go -destination=mock/subscriber_mock.go -package=mock diff --git a/extension/queue/subscription_config.go b/extension/messagequeue/subscription_config.go similarity index 99% rename from extension/queue/subscription_config.go rename to extension/messagequeue/subscription_config.go index 0adf1c5c..a17ab637 100644 --- a/extension/queue/subscription_config.go +++ b/extension/messagequeue/subscription_config.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package queue +package messagequeue // SubscriptionConfig holds per-subscription configuration. // Each subscription (topic) can have its own settings for polling, diff --git a/extension/queue/subscription_config_test.go b/extension/messagequeue/subscription_config_test.go similarity index 99% rename from extension/queue/subscription_config_test.go rename to extension/messagequeue/subscription_config_test.go index bca533df..f8513db0 100644 --- a/extension/queue/subscription_config_test.go +++ b/extension/messagequeue/subscription_config_test.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package queue +package messagequeue import ( "testing" diff --git a/submitqueue/core/consumer/BUILD.bazel b/submitqueue/core/consumer/BUILD.bazel index 2bbfbbfa..5885efd7 100644 --- a/submitqueue/core/consumer/BUILD.bazel +++ b/submitqueue/core/consumer/BUILD.bazel @@ -12,8 +12,8 @@ go_library( deps = [ "//core/errs", "//core/metrics", - "//entity/queue", - "//extension/queue", + "//entity/messagequeue", + "//extension/messagequeue", "@com_github_uber_go_tally_v4//:tally", "@org_uber_go_zap//:zap", ], @@ -28,9 +28,9 @@ go_test( deps = [ ":consumer", "//core/errs", - "//entity/queue", - "//extension/queue", - "//extension/queue/mock", + "//entity/messagequeue", + "//extension/messagequeue", + "//extension/messagequeue/mock", "//submitqueue/core/consumer/mock", "@com_github_stretchr_testify//assert", "@com_github_stretchr_testify//require", diff --git a/submitqueue/core/consumer/consumer.go b/submitqueue/core/consumer/consumer.go index 0cd54a53..4740b214 100644 --- a/submitqueue/core/consumer/consumer.go +++ b/submitqueue/core/consumer/consumer.go @@ -24,7 +24,7 @@ import ( "github.com/uber-go/tally/v4" "github.com/uber/submitqueue/core/errs" "github.com/uber/submitqueue/core/metrics" - "github.com/uber/submitqueue/extension/queue" + extqueue "github.com/uber/submitqueue/extension/messagequeue" "go.uber.org/zap" ) @@ -238,7 +238,7 @@ func (m *consumer) subscribe(ctx context.Context, controller Controller) error { // Any messages buffered in partition channels but not processed before ctx // cancellation are safe to drop — the queue's visibility timeout will make // them visible again for redelivery (at-least-once semantics). -func (m *consumer) consumeLoop(ctx context.Context, controller Controller, deliveryChan <-chan queue.Delivery, done chan struct{}, batchSize int) { +func (m *consumer) consumeLoop(ctx context.Context, controller Controller, deliveryChan <-chan extqueue.Delivery, done chan struct{}, batchSize int) { defer close(done) topicKey := controller.TopicKey() @@ -256,7 +256,7 @@ func (m *consumer) consumeLoop(ctx context.Context, controller Controller, deliv // partitionChs maps partition keys to per-partition delivery channels. // Each channel is created lazily on the first message for that partition // and is never removed — partitions are stable for the lifetime of a subscription. - partitionChs := make(map[string]chan queue.Delivery) + partitionChs := make(map[string]chan extqueue.Delivery) var wg sync.WaitGroup for { @@ -285,10 +285,10 @@ func (m *consumer) consumeLoop(ctx context.Context, controller Controller, deliv partitionKey := delivery.Message().PartitionKey ch, exists := partitionChs[partitionKey] if !exists { - ch = make(chan queue.Delivery, batchSize) + ch = make(chan extqueue.Delivery, batchSize) partitionChs[partitionKey] = ch wg.Add(1) - go func(pCh <-chan queue.Delivery) { + go func(pCh <-chan extqueue.Delivery) { defer wg.Done() m.processPartition(ctx, controller, pCh, controllerScope) }(ch) @@ -309,7 +309,7 @@ func (m *consumer) consumeLoop(ctx context.Context, controller Controller, deliv // shutdownPartitions closes all partition channels to signal processPartition // goroutines to exit, then waits for them to finish draining. -func (m *consumer) shutdownPartitions(partitionChs map[string]chan queue.Delivery, wg *sync.WaitGroup) { +func (m *consumer) shutdownPartitions(partitionChs map[string]chan extqueue.Delivery, wg *sync.WaitGroup) { for _, ch := range partitionChs { close(ch) } @@ -328,7 +328,7 @@ func (m *consumer) shutdownPartitions(partitionChs map[string]chan queue.Deliver // On context cancellation, the current delivery being read from the channel is // dropped without processing. This is safe because the queue's visibility timeout // ensures unprocessed messages are redelivered. -func (m *consumer) processPartition(ctx context.Context, controller Controller, deliveryCh <-chan queue.Delivery, scope tally.Scope) { +func (m *consumer) processPartition(ctx context.Context, controller Controller, deliveryCh <-chan extqueue.Delivery, scope tally.Scope) { for delivery := range deliveryCh { select { case <-ctx.Done(): @@ -340,7 +340,7 @@ func (m *consumer) processPartition(ctx context.Context, controller Controller, } // processDelivery calls the controller and performs ack/nack based on the result. -func (m *consumer) processDelivery(ctx context.Context, controller Controller, delivery queue.Delivery, controllerScope tally.Scope) { +func (m *consumer) processDelivery(ctx context.Context, controller Controller, delivery extqueue.Delivery, controllerScope tally.Scope) { const opName = "process" start := time.Now() diff --git a/submitqueue/core/consumer/consumer_test.go b/submitqueue/core/consumer/consumer_test.go index 9d8814e2..5d8111ed 100644 --- a/submitqueue/core/consumer/consumer_test.go +++ b/submitqueue/core/consumer/consumer_test.go @@ -27,9 +27,9 @@ import ( "github.com/stretchr/testify/require" "github.com/uber-go/tally/v4" "github.com/uber/submitqueue/core/errs" - "github.com/uber/submitqueue/entity/queue" - extqueue "github.com/uber/submitqueue/extension/queue" - queuemock "github.com/uber/submitqueue/extension/queue/mock" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" + extqueue "github.com/uber/submitqueue/extension/messagequeue" + queuemock "github.com/uber/submitqueue/extension/messagequeue/mock" "github.com/uber/submitqueue/submitqueue/core/consumer" consumermock "github.com/uber/submitqueue/submitqueue/core/consumer/mock" "go.uber.org/mock/gomock" @@ -67,7 +67,7 @@ func newRegistry(t *testing.T, q extqueue.Queue, topicKey consumer.TopicKey, con // setupDelivery creates a MockDelivery with standard expectations and a done channel // that closes when Ack or Nack is called. -func setupDelivery(del *queuemock.MockDelivery, msg queue.Message, ackErr, nackErr error) chan struct{} { +func setupDelivery(del *queuemock.MockDelivery, msg entityqueue.Message, ackErr, nackErr error) chan struct{} { done := make(chan struct{}) del.EXPECT().Message().Return(msg).AnyTimes() del.EXPECT().Attempt().Return(1).AnyTimes() @@ -265,7 +265,7 @@ func TestConsumer_ProcessDelivery_Success(t *testing.T) { err = c.Start(ctx) require.NoError(t, err) - msg := queue.NewMessage("test-msg-1", []byte("payload"), "partition1", nil) + msg := entityqueue.NewMessage("test-msg-1", []byte("payload"), "partition1", nil) mockDel := queuemock.NewMockDelivery(ctrl) done := setupDelivery(mockDel, msg, nil, nil) @@ -309,7 +309,7 @@ func TestConsumer_ProcessDelivery_Error(t *testing.T) { err = c.Start(ctx) require.NoError(t, err) - msg := queue.NewMessage("test-msg-2", []byte("payload"), "partition1", nil) + msg := entityqueue.NewMessage("test-msg-2", []byte("payload"), "partition1", nil) mockDel := queuemock.NewMockDelivery(ctrl) done := setupDelivery(mockDel, msg, nil, nil) @@ -351,7 +351,7 @@ func TestConsumer_ProcessDelivery_NonRetryableError(t *testing.T) { err = c.Start(ctx) require.NoError(t, err) - msg := queue.NewMessage("poison-msg", []byte("bad"), "partition1", nil) + msg := entityqueue.NewMessage("poison-msg", []byte("bad"), "partition1", nil) done := make(chan struct{}) mockDel := queuemock.NewMockDelivery(ctrl) mockDel.EXPECT().Message().Return(msg).AnyTimes() @@ -460,7 +460,7 @@ func TestConsumer_ObservabilityTags(t *testing.T) { err = testC.Start(ctx) require.NoError(t, err) - msg := queue.NewMessage("msg-1", []byte("payload"), "partition1", nil) + msg := entityqueue.NewMessage("msg-1", []byte("payload"), "partition1", nil) mockDel := queuemock.NewMockDelivery(ctrl) done := setupDelivery(mockDel, msg, nil, tt.nackError) @@ -533,7 +533,7 @@ func TestConsumer_AckNackLatencyTracking(t *testing.T) { err = c.Start(ctx) require.NoError(t, err) - msg := queue.NewMessage("msg-1", []byte("payload"), "partition1", nil) + msg := entityqueue.NewMessage("msg-1", []byte("payload"), "partition1", nil) mockDel := queuemock.NewMockDelivery(ctrl) done := setupDelivery(mockDel, msg, nil, nil) @@ -580,7 +580,7 @@ func TestConsumer_ErrorMetrics(t *testing.T) { err = c.Start(ctx) require.NoError(t, err) - msg := queue.NewMessage("msg-1", []byte("payload"), "partition1", nil) + msg := entityqueue.NewMessage("msg-1", []byte("payload"), "partition1", nil) mockDel := queuemock.NewMockDelivery(ctrl) done := setupDelivery(mockDel, msg, nil, fmt.Errorf("nack failed")) @@ -653,7 +653,7 @@ func TestConsumer_PerPartitionProcessing(t *testing.T) { require.NoError(t, err) // Send message to partition A (will block in controller) - msgA := queue.NewMessage("msg-a", []byte("payload-a"), "partition-a", nil) + msgA := entityqueue.NewMessage("msg-a", []byte("payload-a"), "partition-a", nil) mockDelA := queuemock.NewMockDelivery(ctrl) mockDelA.EXPECT().Message().Return(msgA).AnyTimes() mockDelA.EXPECT().Attempt().Return(1).AnyTimes() @@ -669,7 +669,7 @@ func TestConsumer_PerPartitionProcessing(t *testing.T) { <-partABlocking // Send message to partition B (should process despite A being blocked) - msgB := queue.NewMessage("msg-b", []byte("payload-b"), "partition-b", nil) + msgB := entityqueue.NewMessage("msg-b", []byte("payload-b"), "partition-b", nil) mockDelB := queuemock.NewMockDelivery(ctrl) mockDelB.EXPECT().Message().Return(msgB).AnyTimes() mockDelB.EXPECT().Attempt().Return(1).AnyTimes() @@ -735,7 +735,7 @@ func TestConsumer_PartitionOrdering(t *testing.T) { // Send 3 messages to the same partition for i, id := range []string{"msg-1", "msg-2", "msg-3"} { - msg := queue.NewMessage(id, []byte("payload"), "same-partition", nil) + msg := entityqueue.NewMessage(id, []byte("payload"), "same-partition", nil) mockDel := queuemock.NewMockDelivery(ctrl) mockDel.EXPECT().Message().Return(msg).AnyTimes() mockDel.EXPECT().Attempt().Return(1).AnyTimes() @@ -796,7 +796,7 @@ func TestConsumer_PartitionWorkerCleanup(t *testing.T) { // Send messages to multiple partitions to spawn multiple goroutines for i := 0; i < 5; i++ { pk := fmt.Sprintf("partition-%d", i) - msg := queue.NewMessage(fmt.Sprintf("msg-%d", i), []byte("payload"), pk, nil) + msg := entityqueue.NewMessage(fmt.Sprintf("msg-%d", i), []byte("payload"), pk, nil) mockDel := queuemock.NewMockDelivery(ctrl) done := setupDelivery(mockDel, msg, nil, nil) deliveryChan <- mockDel diff --git a/submitqueue/core/consumer/controller.go b/submitqueue/core/consumer/controller.go index 6e5e634f..eac16929 100644 --- a/submitqueue/core/consumer/controller.go +++ b/submitqueue/core/consumer/controller.go @@ -19,8 +19,8 @@ package consumer import ( "context" - "github.com/uber/submitqueue/entity/queue" - extqueue "github.com/uber/submitqueue/extension/queue" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" + extqueue "github.com/uber/submitqueue/extension/messagequeue" ) // Delivery is the consumer package's view of a queue delivery. @@ -35,7 +35,7 @@ import ( // - Return a non-retryable error to reject a poison pill message (removes it from the queue). type Delivery interface { // Message returns the delivered message. - Message() queue.Message + Message() entityqueue.Message // ExtendVisibilityTimeout extends the time before this message becomes // visible to other consumers. Use when processing takes longer than expected. @@ -55,13 +55,13 @@ type Delivery interface { Metadata() map[string]string } -// deliveryWrapper wraps extension/queue.Delivery and exposes only the safe subset of methods. +// deliveryWrapper wraps extension/entityqueue.Delivery and exposes only the safe subset of methods. // Hides Ack/Nack from controllers - Consumer handles those automatically. type deliveryWrapper struct { delivery extqueue.Delivery } -func (d *deliveryWrapper) Message() queue.Message { +func (d *deliveryWrapper) Message() entityqueue.Message { return d.delivery.Message() } @@ -92,7 +92,7 @@ func (d *deliveryWrapper) Metadata() map[string]string { // The implementation of the controller should be idempotent and stateless. The controller is expected to be retried for the same message multiple times and should process side effects gracefully. // The implementation must be thread-safe. type Controller interface { - // Process processes a delivery. Controller receives consumer.Delivery (not extension/queue.Delivery) + // Process processes a delivery. Controller receives consumer.Delivery (not extension/entityqueue.Delivery) // which prevents direct Ack/Nack calls - Consumer handles those automatically. // Return nil to ack the message (success), error to nack and retry, or NonRetryableError to ack a poison pill message. // Context controls the lifecycle of the service. It is cancelled when the consumer is stopped. The implementation should process it gracefully: diff --git a/submitqueue/core/consumer/mock/BUILD.bazel b/submitqueue/core/consumer/mock/BUILD.bazel index 177a4b06..8c74b70f 100644 --- a/submitqueue/core/consumer/mock/BUILD.bazel +++ b/submitqueue/core/consumer/mock/BUILD.bazel @@ -6,7 +6,7 @@ go_library( importpath = "github.com/uber/submitqueue/submitqueue/core/consumer/mock", visibility = ["//visibility:public"], deps = [ - "//entity/queue", + "//entity/messagequeue", "//submitqueue/core/consumer", "@org_uber_go_mock//gomock", ], diff --git a/submitqueue/core/consumer/mock/controller_mock.go b/submitqueue/core/consumer/mock/controller_mock.go index 58e6c158..192a2545 100644 --- a/submitqueue/core/consumer/mock/controller_mock.go +++ b/submitqueue/core/consumer/mock/controller_mock.go @@ -13,7 +13,7 @@ import ( context "context" reflect "reflect" - queue "github.com/uber/submitqueue/entity/queue" + messagequeue "github.com/uber/submitqueue/entity/messagequeue" consumer "github.com/uber/submitqueue/submitqueue/core/consumer" gomock "go.uber.org/mock/gomock" ) @@ -85,10 +85,10 @@ func (mr *MockDeliveryMockRecorder) ExtendVisibilityTimeout(ctx, durationMillis } // Message mocks base method. -func (m *MockDelivery) Message() queue.Message { +func (m *MockDelivery) Message() messagequeue.Message { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Message") - ret0, _ := ret[0].(queue.Message) + ret0, _ := ret[0].(messagequeue.Message) return ret0 } diff --git a/submitqueue/core/consumer/registry.go b/submitqueue/core/consumer/registry.go index 0c232b3e..a3c381a4 100644 --- a/submitqueue/core/consumer/registry.go +++ b/submitqueue/core/consumer/registry.go @@ -17,7 +17,7 @@ package consumer import ( "fmt" - "github.com/uber/submitqueue/extension/queue" + extqueue "github.com/uber/submitqueue/extension/messagequeue" ) // TopicKey identifies a pipeline stage. It is a fixed key used to @@ -70,18 +70,18 @@ type TopicConfig struct { // Name is the actual queue topic name (e.g. "request", "my-custom-request"). Name string // Queue is the queue backend for this topic. - Queue queue.Queue + Queue extqueue.Queue // Subscription is the subscription configuration for this topic. // Leave at zero value for publish-only topics. - Subscription queue.SubscriptionConfig + Subscription extqueue.SubscriptionConfig } // TopicRegistry provides queue, topic name, and subscription config for topics. // Each topic can have a different queue backend and topic name. type TopicRegistry struct { - queues map[TopicKey]queue.Queue + queues map[TopicKey]extqueue.Queue topicNames map[TopicKey]string - subscriptionConfigs map[topicGroup]queue.SubscriptionConfig + subscriptionConfigs map[topicGroup]extqueue.SubscriptionConfig } // topicGroup identifies a topic key and consumer group pair. @@ -93,9 +93,9 @@ type topicGroup struct { // NewTopicRegistry creates a new TopicRegistry from a list of TopicConfigs. // Returns an error if any topic name is invalid. func NewTopicRegistry(configs []TopicConfig) (TopicRegistry, error) { - queues := make(map[TopicKey]queue.Queue, len(configs)) + queues := make(map[TopicKey]extqueue.Queue, len(configs)) topicNames := make(map[TopicKey]string, len(configs)) - subConfigs := make(map[topicGroup]queue.SubscriptionConfig) + subConfigs := make(map[topicGroup]extqueue.SubscriptionConfig) for _, cfg := range configs { if err := ValidateTopicName(cfg.Name); err != nil { @@ -143,7 +143,7 @@ func ValidateTopicName(name string) error { // Queue returns the queue backend for the given topic key. // Returns ok=false if no queue is registered for this key. -func (r TopicRegistry) Queue(key TopicKey) (queue.Queue, bool) { +func (r TopicRegistry) Queue(key TopicKey) (extqueue.Queue, bool) { q, ok := r.queues[key] return q, ok } @@ -158,7 +158,7 @@ func (r TopicRegistry) TopicName(key TopicKey) (string, bool) { // SubscriptionConfig returns the subscription configuration for the given // topic key and consumer group. // Returns ok=false if no configuration is registered. -func (r TopicRegistry) SubscriptionConfig(key TopicKey, consumerGroup string) (queue.SubscriptionConfig, bool) { +func (r TopicRegistry) SubscriptionConfig(key TopicKey, consumerGroup string) (extqueue.SubscriptionConfig, bool) { cfg, ok := r.subscriptionConfigs[topicGroup{topicKey: key, consumerGroup: consumerGroup}] return cfg, ok } diff --git a/submitqueue/core/consumer/registry_test.go b/submitqueue/core/consumer/registry_test.go index 93d60243..a4050c9b 100644 --- a/submitqueue/core/consumer/registry_test.go +++ b/submitqueue/core/consumer/registry_test.go @@ -19,8 +19,8 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - extqueue "github.com/uber/submitqueue/extension/queue" - queuemock "github.com/uber/submitqueue/extension/queue/mock" + extqueue "github.com/uber/submitqueue/extension/messagequeue" + queuemock "github.com/uber/submitqueue/extension/messagequeue/mock" "github.com/uber/submitqueue/submitqueue/core/consumer" "go.uber.org/mock/gomock" ) diff --git a/submitqueue/core/request/BUILD.bazel b/submitqueue/core/request/BUILD.bazel index 5c2ba910..c61803b3 100644 --- a/submitqueue/core/request/BUILD.bazel +++ b/submitqueue/core/request/BUILD.bazel @@ -9,7 +9,7 @@ go_library( importpath = "github.com/uber/submitqueue/submitqueue/core/request", visibility = ["//visibility:public"], deps = [ - "//entity/queue", + "//entity/messagequeue", "//submitqueue/core/consumer", "//submitqueue/entity", "//submitqueue/extension/storage", @@ -24,8 +24,8 @@ go_test( ], embed = [":request"], deps = [ - "//entity/queue", - "//extension/queue/mock", + "//entity/messagequeue", + "//extension/messagequeue/mock", "//submitqueue/core/consumer", "//submitqueue/entity", "//submitqueue/extension/storage", diff --git a/submitqueue/core/request/log.go b/submitqueue/core/request/log.go index 3686d23c..7af97060 100644 --- a/submitqueue/core/request/log.go +++ b/submitqueue/core/request/log.go @@ -18,7 +18,7 @@ import ( "context" "fmt" - entityqueue "github.com/uber/submitqueue/entity/queue" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" "github.com/uber/submitqueue/submitqueue/core/consumer" "github.com/uber/submitqueue/submitqueue/entity" ) diff --git a/submitqueue/core/request/log_test.go b/submitqueue/core/request/log_test.go index ece15243..409491ef 100644 --- a/submitqueue/core/request/log_test.go +++ b/submitqueue/core/request/log_test.go @@ -20,8 +20,8 @@ import ( "testing" "github.com/stretchr/testify/require" - "github.com/uber/submitqueue/entity/queue" - queuemock "github.com/uber/submitqueue/extension/queue/mock" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" + queuemock "github.com/uber/submitqueue/extension/messagequeue/mock" "github.com/uber/submitqueue/submitqueue/core/consumer" "github.com/uber/submitqueue/submitqueue/entity" "go.uber.org/mock/gomock" @@ -30,7 +30,7 @@ import ( func newTestRegistry(t *testing.T, ctrl *gomock.Controller, publishErr error) consumer.TopicRegistry { mockPub := queuemock.NewMockPublisher(ctrl) mockPub.EXPECT().Publish(gomock.Any(), gomock.Any(), gomock.Any()).DoAndReturn( - func(ctx context.Context, topic string, msg queue.Message) error { + func(ctx context.Context, topic string, msg entityqueue.Message) error { return publishErr }, ).AnyTimes() @@ -81,7 +81,7 @@ func TestPublishBatchLogs_PartialFailure(t *testing.T) { callCount := 0 mockPub := queuemock.NewMockPublisher(ctrl) mockPub.EXPECT().Publish(gomock.Any(), gomock.Any(), gomock.Any()).DoAndReturn( - func(ctx context.Context, topic string, msg queue.Message) error { + func(ctx context.Context, topic string, msg entityqueue.Message) error { callCount++ if callCount == 2 { return fmt.Errorf("publish failed") @@ -129,7 +129,7 @@ func TestPublishLog_MessageIDScopedByStatus(t *testing.T) { var ids []string mockPub := queuemock.NewMockPublisher(ctrl) mockPub.EXPECT().Publish(gomock.Any(), gomock.Any(), gomock.Any()).DoAndReturn( - func(_ context.Context, _ string, msg queue.Message) error { + func(_ context.Context, _ string, msg entityqueue.Message) error { ids = append(ids, msg.ID) return nil }, diff --git a/submitqueue/gateway/controller/BUILD.bazel b/submitqueue/gateway/controller/BUILD.bazel index c6e3d043..57d06701 100644 --- a/submitqueue/gateway/controller/BUILD.bazel +++ b/submitqueue/gateway/controller/BUILD.bazel @@ -13,11 +13,11 @@ go_library( deps = [ "//core/errs", "//core/metrics", - "//entity/queue", + "//entity/messagequeue", + "//extension/counter", "//submitqueue/core/consumer", "//submitqueue/core/request", "//submitqueue/entity", - "//submitqueue/extension/counter", "//submitqueue/extension/queueconfig", "//submitqueue/extension/storage", "//submitqueue/gateway/protopb", @@ -37,11 +37,11 @@ go_test( embed = [":controller"], deps = [ "//core/errs", - "//entity/queue", - "//extension/queue/mock", + "//entity/messagequeue", + "//extension/counter/mock", + "//extension/messagequeue/mock", "//submitqueue/core/consumer", "//submitqueue/entity", - "//submitqueue/extension/counter/mock", "//submitqueue/extension/queueconfig", "//submitqueue/extension/queueconfig/mock", "//submitqueue/extension/storage", diff --git a/submitqueue/gateway/controller/cancel.go b/submitqueue/gateway/controller/cancel.go index 49d456a1..cc4e136d 100644 --- a/submitqueue/gateway/controller/cancel.go +++ b/submitqueue/gateway/controller/cancel.go @@ -21,7 +21,7 @@ import ( "github.com/uber-go/tally/v4" "github.com/uber/submitqueue/core/errs" - "github.com/uber/submitqueue/entity/queue" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" "github.com/uber/submitqueue/submitqueue/core/consumer" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/storage" @@ -131,7 +131,7 @@ func (c *CancelController) publishToQueue(ctx context.Context, cancelRequest ent // Partition by the sqid so retries and reorderings on the same request are serialised. // TODO: figure best way to ID and partition the message according to new guidelines on queue usage - msg := queue.NewMessage(cancelRequest.ID, payload, cancelRequest.ID, nil) + msg := entityqueue.NewMessage(cancelRequest.ID, payload, cancelRequest.ID, nil) q, ok := c.registry.Queue(consumer.TopicKeyCancel) if !ok { diff --git a/submitqueue/gateway/controller/cancel_test.go b/submitqueue/gateway/controller/cancel_test.go index 492e5773..43526797 100644 --- a/submitqueue/gateway/controller/cancel_test.go +++ b/submitqueue/gateway/controller/cancel_test.go @@ -23,8 +23,8 @@ import ( "github.com/stretchr/testify/require" "github.com/uber-go/tally/v4" "github.com/uber/submitqueue/core/errs" - "github.com/uber/submitqueue/entity/queue" - queuemock "github.com/uber/submitqueue/extension/queue/mock" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" + queuemock "github.com/uber/submitqueue/extension/messagequeue/mock" "github.com/uber/submitqueue/submitqueue/core/consumer" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/storage" @@ -102,13 +102,13 @@ func TestCancel_ReturnsErrorOnEmptySqid(t *testing.T) { func TestCancel_PublishesToQueue(t *testing.T) { var publishedTopic string - var publishedMessage queue.Message + var publishedMessage entityqueue.Message ctrl := gomock.NewController(t) registry, publisher := newCancelTestRegistry(t, ctrl) publisher.EXPECT().Publish(gomock.Any(), gomock.Any(), gomock.Any()).DoAndReturn( - func(ctx context.Context, topic string, msg queue.Message) error { + func(ctx context.Context, topic string, msg entityqueue.Message) error { publishedTopic = topic publishedMessage = msg return nil @@ -151,7 +151,7 @@ func TestCancel_InsertsCancellingLog(t *testing.T) { registry, publisher := newCancelTestRegistry(t, ctrl) insertedBeforePublish := false publisher.EXPECT().Publish(gomock.Any(), gomock.Any(), gomock.Any()).DoAndReturn( - func(_ context.Context, _ string, _ queue.Message) error { + func(_ context.Context, _ string, _ entityqueue.Message) error { insertedBeforePublish = insertedLog.RequestID != "" return nil }, diff --git a/submitqueue/gateway/controller/land.go b/submitqueue/gateway/controller/land.go index 60ac96fe..037914bc 100644 --- a/submitqueue/gateway/controller/land.go +++ b/submitqueue/gateway/controller/land.go @@ -22,10 +22,10 @@ import ( "github.com/uber-go/tally/v4" "github.com/uber/submitqueue/core/errs" "github.com/uber/submitqueue/core/metrics" - "github.com/uber/submitqueue/entity/queue" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" + "github.com/uber/submitqueue/extension/counter" "github.com/uber/submitqueue/submitqueue/core/consumer" "github.com/uber/submitqueue/submitqueue/entity" - "github.com/uber/submitqueue/submitqueue/extension/counter" "github.com/uber/submitqueue/submitqueue/extension/queueconfig" "github.com/uber/submitqueue/submitqueue/extension/storage" pb "github.com/uber/submitqueue/submitqueue/gateway/protopb" @@ -130,7 +130,7 @@ func (c *LandController) Land(ctx context.Context, req *pb.LandRequest) (resp *p } // Record the accepted status in the request log for reconciliation. Once the request materializes as a Request entity, the status might be updated to "new". - // It is important to record the status before publishing to the queue for processing. It is important to publish straight to the database and not via a queue. + // It is important to record the status before publishing to the queue for processing. It is important to publish straight to the database and not via a entityqueue. // Gateway has to stay consistent with the request log. logEntry := entity.NewRequestLog(landRequest.ID, entity.RequestStatusAccepted, 0, "", nil) if err := c.requestLogStore.Insert(ctx, logEntry); err != nil { @@ -174,7 +174,7 @@ func (c *LandController) publishToQueue(ctx context.Context, landRequest entity. // - Message ID: landRequest.ID for idempotency // - Payload: serialized LandRequest entity // - Partition key: landRequest.Queue (ensures ordering per queue) - msg := queue.NewMessage(landRequest.ID, payload, landRequest.Queue, nil) + msg := entityqueue.NewMessage(landRequest.ID, payload, landRequest.Queue, nil) q, ok := c.registry.Queue(consumer.TopicKeyStart) if !ok { diff --git a/submitqueue/gateway/controller/land_test.go b/submitqueue/gateway/controller/land_test.go index 2d4762e8..668e3490 100644 --- a/submitqueue/gateway/controller/land_test.go +++ b/submitqueue/gateway/controller/land_test.go @@ -23,11 +23,11 @@ import ( "github.com/stretchr/testify/require" "github.com/uber-go/tally/v4" "github.com/uber/submitqueue/core/errs" - "github.com/uber/submitqueue/entity/queue" - queuemock "github.com/uber/submitqueue/extension/queue/mock" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" + countermock "github.com/uber/submitqueue/extension/counter/mock" + queuemock "github.com/uber/submitqueue/extension/messagequeue/mock" "github.com/uber/submitqueue/submitqueue/core/consumer" "github.com/uber/submitqueue/submitqueue/entity" - countermock "github.com/uber/submitqueue/submitqueue/extension/counter/mock" "github.com/uber/submitqueue/submitqueue/extension/queueconfig" qcmock "github.com/uber/submitqueue/submitqueue/extension/queueconfig/mock" storagemock "github.com/uber/submitqueue/submitqueue/extension/storage/mock" @@ -244,7 +244,7 @@ func TestLand_PropagatesQueueConfigStoreError(t *testing.T) { func TestLand_PublishesToQueue(t *testing.T) { var publishedTopic string - var publishedMessage queue.Message + var publishedMessage entityqueue.Message ctrl := gomock.NewController(t) @@ -253,7 +253,7 @@ func TestLand_PublishesToQueue(t *testing.T) { registry, publisher := newTestRegistry(t, ctrl) publisher.EXPECT().Publish(gomock.Any(), gomock.Any(), gomock.Any()).DoAndReturn( - func(ctx context.Context, topic string, msg queue.Message) error { + func(ctx context.Context, topic string, msg entityqueue.Message) error { publishedTopic = topic publishedMessage = msg return nil diff --git a/submitqueue/orchestrator/controller/batch/BUILD.bazel b/submitqueue/orchestrator/controller/batch/BUILD.bazel index 4af0fa02..68839362 100644 --- a/submitqueue/orchestrator/controller/batch/BUILD.bazel +++ b/submitqueue/orchestrator/controller/batch/BUILD.bazel @@ -7,11 +7,11 @@ go_library( visibility = ["//visibility:public"], deps = [ "//core/metrics", - "//entity/queue", + "//entity/messagequeue", + "//extension/counter", "//submitqueue/core/consumer", "//submitqueue/entity", "//submitqueue/extension/conflict", - "//submitqueue/extension/counter", "//submitqueue/extension/storage", "@com_github_uber_go_tally_v4//:tally", "@org_uber_go_zap//:zap", @@ -23,14 +23,14 @@ go_test( srcs = ["batch_test.go"], embed = [":batch"], deps = [ - "//entity/queue", - "//extension/queue/mock", + "//entity/messagequeue", + "//extension/counter/mock", + "//extension/messagequeue/mock", "//submitqueue/core/consumer", "//submitqueue/entity", "//submitqueue/extension/conflict", "//submitqueue/extension/conflict/all", "//submitqueue/extension/conflict/mock", - "//submitqueue/extension/counter/mock", "//submitqueue/extension/storage", "//submitqueue/extension/storage/mock", "@com_github_stretchr_testify//assert", diff --git a/submitqueue/orchestrator/controller/batch/batch.go b/submitqueue/orchestrator/controller/batch/batch.go index cbfa9857..189e5e6d 100644 --- a/submitqueue/orchestrator/controller/batch/batch.go +++ b/submitqueue/orchestrator/controller/batch/batch.go @@ -21,11 +21,11 @@ import ( "github.com/uber-go/tally/v4" "github.com/uber/submitqueue/core/metrics" - entityqueue "github.com/uber/submitqueue/entity/queue" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" + "github.com/uber/submitqueue/extension/counter" "github.com/uber/submitqueue/submitqueue/core/consumer" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/conflict" - "github.com/uber/submitqueue/submitqueue/extension/counter" "github.com/uber/submitqueue/submitqueue/extension/storage" "go.uber.org/zap" ) diff --git a/submitqueue/orchestrator/controller/batch/batch_test.go b/submitqueue/orchestrator/controller/batch/batch_test.go index 1209e191..d18e195a 100644 --- a/submitqueue/orchestrator/controller/batch/batch_test.go +++ b/submitqueue/orchestrator/controller/batch/batch_test.go @@ -24,14 +24,14 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/uber-go/tally/v4" - "github.com/uber/submitqueue/entity/queue" - queuemock "github.com/uber/submitqueue/extension/queue/mock" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" + countermock "github.com/uber/submitqueue/extension/counter/mock" + queuemock "github.com/uber/submitqueue/extension/messagequeue/mock" "github.com/uber/submitqueue/submitqueue/core/consumer" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/conflict" "github.com/uber/submitqueue/submitqueue/extension/conflict/all" conflictmock "github.com/uber/submitqueue/submitqueue/extension/conflict/mock" - countermock "github.com/uber/submitqueue/submitqueue/extension/counter/mock" "github.com/uber/submitqueue/submitqueue/extension/storage" storagemock "github.com/uber/submitqueue/submitqueue/extension/storage/mock" "go.uber.org/mock/gomock" @@ -101,7 +101,7 @@ func newTestController(t *testing.T, ctrl *gomock.Controller, cnt *countermock.M mockPub := queuemock.NewMockPublisher(ctrl) mockPub.EXPECT().Publish(gomock.Any(), gomock.Any(), gomock.Any()).DoAndReturn( - func(ctx context.Context, topic string, msg queue.Message) error { + func(ctx context.Context, topic string, msg entityqueue.Message) error { return publishErr }, ).AnyTimes() @@ -133,7 +133,7 @@ func TestController_Process_Success(t *testing.T) { controller := newTestController(t, ctrl, newSequentialCounter(ctrl), nil, nil, nil) request := testRequest() - msg := queue.NewMessage(request.ID, requestIDPayload(t, request.ID), request.Queue, nil) + msg := entityqueue.NewMessage(request.ID, requestIDPayload(t, request.ID), request.Queue, nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() @@ -153,7 +153,7 @@ func TestController_Process_StorageFailure(t *testing.T) { controller := newTestController(t, ctrl, newSequentialCounter(ctrl), mockStorage, nil, nil) - msg := queue.NewMessage("test-queue/123", requestIDPayload(t, "test-queue/123"), "test-queue", nil) + msg := entityqueue.NewMessage("test-queue/123", requestIDPayload(t, "test-queue/123"), "test-queue", nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() @@ -168,7 +168,7 @@ func TestController_Process_PublishFailure(t *testing.T) { controller := newTestController(t, ctrl, newSequentialCounter(ctrl), nil, nil, fmt.Errorf("publish failed")) request := testRequest() - msg := queue.NewMessage(request.ID, requestIDPayload(t, request.ID), request.Queue, nil) + msg := entityqueue.NewMessage(request.ID, requestIDPayload(t, request.ID), request.Queue, nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() @@ -185,7 +185,7 @@ func TestController_Process_CounterFailure(t *testing.T) { controller := newTestController(t, ctrl, cnt, nil, nil, nil) request := testRequest() - msg := queue.NewMessage(request.ID, requestIDPayload(t, request.ID), request.Queue, nil) + msg := entityqueue.NewMessage(request.ID, requestIDPayload(t, request.ID), request.Queue, nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() @@ -244,7 +244,7 @@ func TestController_Process_WithDependencies(t *testing.T) { controller := newTestController(t, ctrl, newSequentialCounter(ctrl), mockStorage, nil, nil) - msg := queue.NewMessage(request.ID, requestIDPayload(t, request.ID), request.Queue, nil) + msg := entityqueue.NewMessage(request.ID, requestIDPayload(t, request.ID), request.Queue, nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() @@ -296,7 +296,7 @@ func TestController_Process_AnalyzerSelectsSubset(t *testing.T) { controller := newTestController(t, ctrl, newSequentialCounter(ctrl), mockStorage, analyzer, nil) - msg := queue.NewMessage(request.ID, requestIDPayload(t, request.ID), request.Queue, nil) + msg := entityqueue.NewMessage(request.ID, requestIDPayload(t, request.ID), request.Queue, nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() @@ -325,7 +325,7 @@ func TestController_Process_AnalyzerFailure(t *testing.T) { controller := newTestController(t, ctrl, newSequentialCounter(ctrl), mockStorage, analyzer, nil) - msg := queue.NewMessage(request.ID, requestIDPayload(t, request.ID), request.Queue, nil) + msg := entityqueue.NewMessage(request.ID, requestIDPayload(t, request.ID), request.Queue, nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() @@ -381,7 +381,7 @@ func TestController_Process_HaltedShortCircuit(t *testing.T) { controller := newTestController(t, ctrl, cnt, mockStorage, nil, fmt.Errorf("should not publish")) - msg := queue.NewMessage(request.ID, requestIDPayload(t, request.ID), request.Queue, nil) + msg := entityqueue.NewMessage(request.ID, requestIDPayload(t, request.ID), request.Queue, nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() @@ -441,7 +441,7 @@ func TestController_Process_CASLostToCancel(t *testing.T) { mockStorage, all.New(), consumer.TopicKeyBatch, "orchestrator-batch", ) - msg := queue.NewMessage(request.ID, requestIDPayload(t, request.ID), request.Queue, nil) + msg := entityqueue.NewMessage(request.ID, requestIDPayload(t, request.ID), request.Queue, nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() @@ -478,7 +478,7 @@ func TestController_Process_CASUnexpectedErrorPropagates(t *testing.T) { controller := newTestController(t, ctrl, newSequentialCounter(ctrl), mockStorage, nil, nil) - msg := queue.NewMessage(request.ID, requestIDPayload(t, request.ID), request.Queue, nil) + msg := entityqueue.NewMessage(request.ID, requestIDPayload(t, request.ID), request.Queue, nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() @@ -523,7 +523,7 @@ func TestController_Process_RecoveryAfterPriorCAS(t *testing.T) { controller := newTestController(t, ctrl, newSequentialCounter(ctrl), mockStorage, nil, nil) - msg := queue.NewMessage(request.ID, requestIDPayload(t, request.ID), request.Queue, nil) + msg := entityqueue.NewMessage(request.ID, requestIDPayload(t, request.ID), request.Queue, nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() diff --git a/submitqueue/orchestrator/controller/build/BUILD.bazel b/submitqueue/orchestrator/controller/build/BUILD.bazel index 6c287846..706a425f 100644 --- a/submitqueue/orchestrator/controller/build/BUILD.bazel +++ b/submitqueue/orchestrator/controller/build/BUILD.bazel @@ -7,7 +7,7 @@ go_library( visibility = ["//visibility:public"], deps = [ "//core/metrics", - "//entity/queue", + "//entity/messagequeue", "//submitqueue/core/consumer", "//submitqueue/entity", "//submitqueue/extension/buildrunner", @@ -23,8 +23,8 @@ go_test( embed = [":build"], deps = [ "//core/errs", - "//entity/queue", - "//extension/queue/mock", + "//entity/messagequeue", + "//extension/messagequeue/mock", "//submitqueue/core/consumer", "//submitqueue/entity", "//submitqueue/extension/buildrunner", diff --git a/submitqueue/orchestrator/controller/build/build.go b/submitqueue/orchestrator/controller/build/build.go index c68c1ce0..7f19ff58 100644 --- a/submitqueue/orchestrator/controller/build/build.go +++ b/submitqueue/orchestrator/controller/build/build.go @@ -21,7 +21,7 @@ import ( "github.com/uber-go/tally/v4" "github.com/uber/submitqueue/core/metrics" - entityqueue "github.com/uber/submitqueue/entity/queue" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" "github.com/uber/submitqueue/submitqueue/core/consumer" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/buildrunner" diff --git a/submitqueue/orchestrator/controller/build/build_test.go b/submitqueue/orchestrator/controller/build/build_test.go index d8c0d2e6..90073c36 100644 --- a/submitqueue/orchestrator/controller/build/build_test.go +++ b/submitqueue/orchestrator/controller/build/build_test.go @@ -23,8 +23,8 @@ import ( "github.com/stretchr/testify/require" "github.com/uber-go/tally/v4" "github.com/uber/submitqueue/core/errs" - "github.com/uber/submitqueue/entity/queue" - queuemock "github.com/uber/submitqueue/extension/queue/mock" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" + queuemock "github.com/uber/submitqueue/extension/messagequeue/mock" "github.com/uber/submitqueue/submitqueue/core/consumer" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/buildrunner" @@ -83,7 +83,7 @@ func newTestController(t *testing.T, ctrl *gomock.Controller, store *storagemock mockPub := queuemock.NewMockPublisher(ctrl) mockPub.EXPECT().Publish(gomock.Any(), gomock.Any(), gomock.Any()).DoAndReturn( - func(ctx context.Context, topic string, msg queue.Message) error { + func(ctx context.Context, topic string, msg entityqueue.Message) error { return publishErr }, ).AnyTimes() @@ -118,7 +118,7 @@ func TestController_Process_Success(t *testing.T) { store := newMockStorage(ctrl, batch) controller := newTestController(t, ctrl, store, buildnoop.New(), nil) - msg := queue.NewMessage(batch.ID, batchIDPayload(t, batch.ID), batch.Queue, nil) + msg := entityqueue.NewMessage(batch.ID, batchIDPayload(t, batch.ID), batch.Queue, nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() @@ -182,7 +182,7 @@ func TestController_Process_TriggersWithBaseAndHead(t *testing.T) { var published entity.BuildID mockPub := queuemock.NewMockPublisher(ctrl) mockPub.EXPECT().Publish(gomock.Any(), gomock.Any(), gomock.Any()).DoAndReturn( - func(_ context.Context, topic string, msg queue.Message) error { + func(_ context.Context, topic string, msg entityqueue.Message) error { publishedTopic = topic bid, err := entity.BuildIDFromBytes(msg.Payload) require.NoError(t, err) @@ -199,7 +199,7 @@ func TestController_Process_TriggersWithBaseAndHead(t *testing.T) { controller := NewController(zaptest.NewLogger(t).Sugar(), tally.NoopScope, store, br, registry, consumer.TopicKeyBuild, "orchestrator-build") - msg := queue.NewMessage(headBatch.ID, batchIDPayload(t, headBatch.ID), headBatch.Queue, nil) + msg := entityqueue.NewMessage(headBatch.ID, batchIDPayload(t, headBatch.ID), headBatch.Queue, nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() @@ -244,7 +244,7 @@ func TestController_Process_BuildStoreAlreadyExistsIsSwallowed(t *testing.T) { publishCalled := false mockPub := queuemock.NewMockPublisher(ctrl) mockPub.EXPECT().Publish(gomock.Any(), "buildsignal", gomock.Any()).DoAndReturn( - func(_ context.Context, _ string, _ queue.Message) error { + func(_ context.Context, _ string, _ entityqueue.Message) error { publishCalled = true return nil }, @@ -257,7 +257,7 @@ func TestController_Process_BuildStoreAlreadyExistsIsSwallowed(t *testing.T) { require.NoError(t, err) controller := NewController(zaptest.NewLogger(t).Sugar(), tally.NoopScope, store, br, registry, consumer.TopicKeyBuild, "orchestrator-build") - msg := queue.NewMessage(batch.ID, batchIDPayload(t, batch.ID), batch.Queue, nil) + msg := entityqueue.NewMessage(batch.ID, batchIDPayload(t, batch.ID), batch.Queue, nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() @@ -289,7 +289,7 @@ func TestController_Process_TriggerFailure(t *testing.T) { require.NoError(t, err) controller := NewController(zaptest.NewLogger(t).Sugar(), tally.NoopScope, store, br, registry, consumer.TopicKeyBuild, "orchestrator-build") - msg := queue.NewMessage(batch.ID, batchIDPayload(t, batch.ID), batch.Queue, nil) + msg := entityqueue.NewMessage(batch.ID, batchIDPayload(t, batch.ID), batch.Queue, nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() @@ -309,7 +309,7 @@ func TestController_Process_StorageFailure(t *testing.T) { controller := newTestController(t, ctrl, store, buildnoop.New(), nil) - msg := queue.NewMessage("test-queue/batch/1", batchIDPayload(t, "test-queue/batch/1"), "test-queue", nil) + msg := entityqueue.NewMessage("test-queue/batch/1", batchIDPayload(t, "test-queue/batch/1"), "test-queue", nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() @@ -326,7 +326,7 @@ func TestController_Process_PublishFailure(t *testing.T) { store := newMockStorage(ctrl, batch) controller := newTestController(t, ctrl, store, buildnoop.New(), fmt.Errorf("publish failed")) - msg := queue.NewMessage(batch.ID, batchIDPayload(t, batch.ID), batch.Queue, nil) + msg := entityqueue.NewMessage(batch.ID, batchIDPayload(t, batch.ID), batch.Queue, nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() @@ -373,7 +373,7 @@ func TestController_Process_HaltedShortCircuit(t *testing.T) { // does, Process surfaces this error and require.NoError catches it. controller := newTestController(t, ctrl, store, br, fmt.Errorf("should not publish")) - msg := queue.NewMessage(batch.ID, batchIDPayload(t, batch.ID), batch.Queue, nil) + msg := entityqueue.NewMessage(batch.ID, batchIDPayload(t, batch.ID), batch.Queue, nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() diff --git a/submitqueue/orchestrator/controller/buildsignal/BUILD.bazel b/submitqueue/orchestrator/controller/buildsignal/BUILD.bazel index 4fffb4ad..1481d473 100644 --- a/submitqueue/orchestrator/controller/buildsignal/BUILD.bazel +++ b/submitqueue/orchestrator/controller/buildsignal/BUILD.bazel @@ -8,7 +8,7 @@ go_library( deps = [ "//core/errs", "//core/metrics", - "//entity/queue", + "//entity/messagequeue", "//submitqueue/core/consumer", "//submitqueue/entity", "//submitqueue/extension/buildrunner", @@ -24,8 +24,8 @@ go_test( embed = [":buildsignal"], deps = [ "//core/errs", - "//entity/queue", - "//extension/queue/mock", + "//entity/messagequeue", + "//extension/messagequeue/mock", "//submitqueue/core/consumer", "//submitqueue/entity", "//submitqueue/extension/buildrunner/mock", diff --git a/submitqueue/orchestrator/controller/buildsignal/buildsignal.go b/submitqueue/orchestrator/controller/buildsignal/buildsignal.go index 7fddfad4..9d98045f 100644 --- a/submitqueue/orchestrator/controller/buildsignal/buildsignal.go +++ b/submitqueue/orchestrator/controller/buildsignal/buildsignal.go @@ -29,7 +29,7 @@ import ( "github.com/uber-go/tally/v4" "github.com/uber/submitqueue/core/errs" "github.com/uber/submitqueue/core/metrics" - entityqueue "github.com/uber/submitqueue/entity/queue" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" "github.com/uber/submitqueue/submitqueue/core/consumer" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/buildrunner" diff --git a/submitqueue/orchestrator/controller/buildsignal/buildsignal_test.go b/submitqueue/orchestrator/controller/buildsignal/buildsignal_test.go index 0d24d32a..6c732761 100644 --- a/submitqueue/orchestrator/controller/buildsignal/buildsignal_test.go +++ b/submitqueue/orchestrator/controller/buildsignal/buildsignal_test.go @@ -23,8 +23,8 @@ import ( "github.com/stretchr/testify/require" "github.com/uber-go/tally/v4" "github.com/uber/submitqueue/core/errs" - entityqueue "github.com/uber/submitqueue/entity/queue" - queuemock "github.com/uber/submitqueue/extension/queue/mock" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" + queuemock "github.com/uber/submitqueue/extension/messagequeue/mock" "github.com/uber/submitqueue/submitqueue/core/consumer" "github.com/uber/submitqueue/submitqueue/entity" buildrunnermock "github.com/uber/submitqueue/submitqueue/extension/buildrunner/mock" diff --git a/submitqueue/orchestrator/controller/cancel/BUILD.bazel b/submitqueue/orchestrator/controller/cancel/BUILD.bazel index a0e20ab8..05460106 100644 --- a/submitqueue/orchestrator/controller/cancel/BUILD.bazel +++ b/submitqueue/orchestrator/controller/cancel/BUILD.bazel @@ -6,7 +6,7 @@ go_library( importpath = "github.com/uber/submitqueue/submitqueue/orchestrator/controller/cancel", visibility = ["//visibility:public"], deps = [ - "//entity/queue", + "//entity/messagequeue", "//submitqueue/core/consumer", "//submitqueue/core/request", "//submitqueue/entity", @@ -21,8 +21,8 @@ go_test( srcs = ["cancel_test.go"], embed = [":cancel"], deps = [ - "//entity/queue", - "//extension/queue/mock", + "//entity/messagequeue", + "//extension/messagequeue/mock", "//submitqueue/core/consumer", "//submitqueue/entity", "//submitqueue/extension/storage", diff --git a/submitqueue/orchestrator/controller/cancel/cancel.go b/submitqueue/orchestrator/controller/cancel/cancel.go index d17cbe95..cddd2336 100644 --- a/submitqueue/orchestrator/controller/cancel/cancel.go +++ b/submitqueue/orchestrator/controller/cancel/cancel.go @@ -59,7 +59,7 @@ import ( "fmt" "github.com/uber-go/tally/v4" - entityqueue "github.com/uber/submitqueue/entity/queue" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" "github.com/uber/submitqueue/submitqueue/core/consumer" corerequest "github.com/uber/submitqueue/submitqueue/core/request" "github.com/uber/submitqueue/submitqueue/entity" diff --git a/submitqueue/orchestrator/controller/cancel/cancel_test.go b/submitqueue/orchestrator/controller/cancel/cancel_test.go index 360a8d8e..82308c22 100644 --- a/submitqueue/orchestrator/controller/cancel/cancel_test.go +++ b/submitqueue/orchestrator/controller/cancel/cancel_test.go @@ -22,8 +22,8 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/uber-go/tally/v4" - "github.com/uber/submitqueue/entity/queue" - queuemock "github.com/uber/submitqueue/extension/queue/mock" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" + queuemock "github.com/uber/submitqueue/extension/messagequeue/mock" "github.com/uber/submitqueue/submitqueue/core/consumer" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/storage" @@ -63,7 +63,7 @@ func newController(t *testing.T, store storage.Storage, registry consumer.TopicR } func newDelivery(t *testing.T, ctrl *gomock.Controller, payload []byte, partitionKey string) consumer.Delivery { - msg := queue.NewMessage("cancel-msg", payload, partitionKey, nil) + msg := entityqueue.NewMessage("cancel-msg", payload, partitionKey, nil) d := queuemock.NewMockDelivery(ctrl) d.EXPECT().Message().Return(msg).AnyTimes() d.EXPECT().Attempt().Return(1).AnyTimes() @@ -127,7 +127,7 @@ func TestProcess_CancelsUnbatchedRequest(t *testing.T) { var publishedTopics []string pub.EXPECT().Publish(gomock.Any(), gomock.Any(), gomock.Any()).DoAndReturn( - func(_ context.Context, topic string, _ queue.Message) error { + func(_ context.Context, topic string, _ entityqueue.Message) error { publishedTopics = append(publishedTopics, topic) return nil }).AnyTimes() @@ -256,7 +256,7 @@ func TestProcess_BatchPath_HandsOffToSpeculate(t *testing.T) { } var records []pubRec pub.EXPECT().Publish(gomock.Any(), gomock.Any(), gomock.Any()).DoAndReturn( - func(_ context.Context, topic string, msg queue.Message) error { + func(_ context.Context, topic string, msg entityqueue.Message) error { records = append(records, pubRec{topic: topic, msgID: msg.ID}) return nil }).AnyTimes() @@ -303,7 +303,7 @@ func TestProcess_BatchAlreadyCancelling_RepublishesToSpeculate(t *testing.T) { var publishedTopics []string pub.EXPECT().Publish(gomock.Any(), gomock.Any(), gomock.Any()).DoAndReturn( - func(_ context.Context, topic string, _ queue.Message) error { + func(_ context.Context, topic string, _ entityqueue.Message) error { publishedTopics = append(publishedTopics, topic) return nil }).AnyTimes() diff --git a/submitqueue/orchestrator/controller/conclude/BUILD.bazel b/submitqueue/orchestrator/controller/conclude/BUILD.bazel index 99da6e9d..b9ad9ff3 100644 --- a/submitqueue/orchestrator/controller/conclude/BUILD.bazel +++ b/submitqueue/orchestrator/controller/conclude/BUILD.bazel @@ -21,8 +21,8 @@ go_test( embed = [":conclude"], deps = [ "//core/errs", - "//entity/queue", - "//extension/queue/mock", + "//entity/messagequeue", + "//extension/messagequeue/mock", "//submitqueue/core/consumer", "//submitqueue/entity", "//submitqueue/extension/storage", diff --git a/submitqueue/orchestrator/controller/conclude/conclude_test.go b/submitqueue/orchestrator/controller/conclude/conclude_test.go index d3f4cd6d..18d10c73 100644 --- a/submitqueue/orchestrator/controller/conclude/conclude_test.go +++ b/submitqueue/orchestrator/controller/conclude/conclude_test.go @@ -23,8 +23,8 @@ import ( "github.com/stretchr/testify/require" "github.com/uber-go/tally/v4" "github.com/uber/submitqueue/core/errs" - "github.com/uber/submitqueue/entity/queue" - queuemock "github.com/uber/submitqueue/extension/queue/mock" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" + queuemock "github.com/uber/submitqueue/extension/messagequeue/mock" "github.com/uber/submitqueue/submitqueue/core/consumer" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/storage" @@ -298,7 +298,7 @@ func TestController_Process(t *testing.T) { controller := newTestController(t, ctrl, mockStorage) - msg := queue.NewMessage(tt.batch.ID, batchIDPayload(t, tt.batch.ID), tt.batch.Queue, nil) + msg := entityqueue.NewMessage(tt.batch.ID, batchIDPayload(t, tt.batch.ID), tt.batch.Queue, nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() @@ -326,7 +326,7 @@ func TestController_Process_StorageFailure(t *testing.T) { controller := newTestController(t, ctrl, mockStorage) - msg := queue.NewMessage("test-queue/batch/1", batchIDPayload(t, "test-queue/batch/1"), "test-queue", nil) + msg := entityqueue.NewMessage("test-queue/batch/1", batchIDPayload(t, "test-queue/batch/1"), "test-queue", nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() diff --git a/submitqueue/orchestrator/controller/log/BUILD.bazel b/submitqueue/orchestrator/controller/log/BUILD.bazel index 7d96b1f0..f700931c 100644 --- a/submitqueue/orchestrator/controller/log/BUILD.bazel +++ b/submitqueue/orchestrator/controller/log/BUILD.bazel @@ -20,8 +20,8 @@ go_test( srcs = ["log_test.go"], embed = [":log"], deps = [ - "//entity/queue", - "//extension/queue/mock", + "//entity/messagequeue", + "//extension/messagequeue/mock", "//submitqueue/core/consumer", "//submitqueue/entity", "//submitqueue/extension/storage/mock", diff --git a/submitqueue/orchestrator/controller/log/log_test.go b/submitqueue/orchestrator/controller/log/log_test.go index ff1bef8d..f8a1319d 100644 --- a/submitqueue/orchestrator/controller/log/log_test.go +++ b/submitqueue/orchestrator/controller/log/log_test.go @@ -21,8 +21,8 @@ import ( "github.com/stretchr/testify/require" "github.com/uber-go/tally/v4" - "github.com/uber/submitqueue/entity/queue" - queuemock "github.com/uber/submitqueue/extension/queue/mock" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" + queuemock "github.com/uber/submitqueue/extension/messagequeue/mock" "github.com/uber/submitqueue/submitqueue/core/consumer" "github.com/uber/submitqueue/submitqueue/entity" storagemock "github.com/uber/submitqueue/submitqueue/extension/storage/mock" @@ -100,7 +100,7 @@ func TestController_Process(t *testing.T) { store := tt.setupStore(ctrl) controller := newTestController(t, ctrl, store) - msg := queue.NewMessage("test-queue/1", payload, "test-queue", nil) + msg := entityqueue.NewMessage("test-queue/1", payload, "test-queue", nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() diff --git a/submitqueue/orchestrator/controller/merge/BUILD.bazel b/submitqueue/orchestrator/controller/merge/BUILD.bazel index 62929205..d2424dd0 100644 --- a/submitqueue/orchestrator/controller/merge/BUILD.bazel +++ b/submitqueue/orchestrator/controller/merge/BUILD.bazel @@ -7,7 +7,7 @@ go_library( visibility = ["//visibility:public"], deps = [ "//core/metrics", - "//entity/queue", + "//entity/messagequeue", "//submitqueue/core/consumer", "//submitqueue/entity", "//submitqueue/extension/pusher", @@ -23,8 +23,8 @@ go_test( embed = [":merge"], deps = [ "//core/errs", - "//entity/queue", - "//extension/queue/mock", + "//entity/messagequeue", + "//extension/messagequeue/mock", "//submitqueue/core/consumer", "//submitqueue/entity", "//submitqueue/extension/pusher", diff --git a/submitqueue/orchestrator/controller/merge/merge.go b/submitqueue/orchestrator/controller/merge/merge.go index 8f3172c5..742f086e 100644 --- a/submitqueue/orchestrator/controller/merge/merge.go +++ b/submitqueue/orchestrator/controller/merge/merge.go @@ -23,7 +23,7 @@ import ( "go.uber.org/zap" coremetrics "github.com/uber/submitqueue/core/metrics" - entityqueue "github.com/uber/submitqueue/entity/queue" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" "github.com/uber/submitqueue/submitqueue/core/consumer" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/pusher" diff --git a/submitqueue/orchestrator/controller/merge/merge_test.go b/submitqueue/orchestrator/controller/merge/merge_test.go index 50f6652b..2d69468f 100644 --- a/submitqueue/orchestrator/controller/merge/merge_test.go +++ b/submitqueue/orchestrator/controller/merge/merge_test.go @@ -26,8 +26,8 @@ import ( "go.uber.org/zap/zaptest" "github.com/uber/submitqueue/core/errs" - "github.com/uber/submitqueue/entity/queue" - queuemock "github.com/uber/submitqueue/extension/queue/mock" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" + queuemock "github.com/uber/submitqueue/extension/messagequeue/mock" "github.com/uber/submitqueue/submitqueue/core/consumer" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/pusher" @@ -43,7 +43,7 @@ func batchIDPayload(t *testing.T, id string) []byte { } func newDelivery(t *testing.T, ctrl *gomock.Controller, batchID, partitionKey string) *queuemock.MockDelivery { - msg := queue.NewMessage(batchID, batchIDPayload(t, batchID), partitionKey, nil) + msg := entityqueue.NewMessage(batchID, batchIDPayload(t, batchID), partitionKey, nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() @@ -54,7 +54,7 @@ func newDelivery(t *testing.T, ctrl *gomock.Controller, batchID, partitionKey st func newRegistry(t *testing.T, ctrl *gomock.Controller, publishErr error) consumer.TopicRegistry { mockPub := queuemock.NewMockPublisher(ctrl) mockPub.EXPECT().Publish(gomock.Any(), gomock.Any(), gomock.Any()).DoAndReturn( - func(_ context.Context, _ string, _ queue.Message) error { return publishErr }, + func(_ context.Context, _ string, _ entityqueue.Message) error { return publishErr }, ).AnyTimes() mockQ := queuemock.NewMockQueue(ctrl) mockQ.EXPECT().Publisher().Return(mockPub).AnyTimes() diff --git a/submitqueue/orchestrator/controller/score/BUILD.bazel b/submitqueue/orchestrator/controller/score/BUILD.bazel index 02e27b7e..e1f9aa49 100644 --- a/submitqueue/orchestrator/controller/score/BUILD.bazel +++ b/submitqueue/orchestrator/controller/score/BUILD.bazel @@ -7,7 +7,7 @@ go_library( visibility = ["//visibility:public"], deps = [ "//core/metrics", - "//entity/queue", + "//entity/messagequeue", "//submitqueue/core/consumer", "//submitqueue/core/request", "//submitqueue/entity", @@ -24,8 +24,8 @@ go_test( embed = [":score"], deps = [ "//core/errs", - "//entity/queue", - "//extension/queue/mock", + "//entity/messagequeue", + "//extension/messagequeue/mock", "//submitqueue/core/consumer", "//submitqueue/entity", "//submitqueue/extension/scorer/mock", diff --git a/submitqueue/orchestrator/controller/score/score.go b/submitqueue/orchestrator/controller/score/score.go index b9cf86b6..d4aa5f2c 100644 --- a/submitqueue/orchestrator/controller/score/score.go +++ b/submitqueue/orchestrator/controller/score/score.go @@ -20,7 +20,7 @@ import ( "github.com/uber-go/tally/v4" "github.com/uber/submitqueue/core/metrics" - entityqueue "github.com/uber/submitqueue/entity/queue" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" "github.com/uber/submitqueue/submitqueue/core/consumer" corerequest "github.com/uber/submitqueue/submitqueue/core/request" "github.com/uber/submitqueue/submitqueue/entity" diff --git a/submitqueue/orchestrator/controller/score/score_test.go b/submitqueue/orchestrator/controller/score/score_test.go index 6c040761..ef866753 100644 --- a/submitqueue/orchestrator/controller/score/score_test.go +++ b/submitqueue/orchestrator/controller/score/score_test.go @@ -23,8 +23,8 @@ import ( "github.com/stretchr/testify/require" "github.com/uber-go/tally/v4" "github.com/uber/submitqueue/core/errs" - "github.com/uber/submitqueue/entity/queue" - queuemock "github.com/uber/submitqueue/extension/queue/mock" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" + queuemock "github.com/uber/submitqueue/extension/messagequeue/mock" "github.com/uber/submitqueue/submitqueue/core/consumer" "github.com/uber/submitqueue/submitqueue/entity" scorermock "github.com/uber/submitqueue/submitqueue/extension/scorer/mock" @@ -86,7 +86,7 @@ func newTestController(t *testing.T, ctrl *gomock.Controller, store *storagemock mockPub := queuemock.NewMockPublisher(ctrl) mockPub.EXPECT().Publish(gomock.Any(), gomock.Any(), gomock.Any()).DoAndReturn( - func(ctx context.Context, topic string, msg queue.Message) error { + func(ctx context.Context, topic string, msg entityqueue.Message) error { return publishErr }, ).AnyTimes() @@ -132,7 +132,7 @@ func TestController_Process_Success(t *testing.T) { controller := newTestController(t, ctrl, store, mockScorer, nil) - msg := queue.NewMessage(batch.ID, batchIDPayload(t, batch.ID), batch.Queue, nil) + msg := entityqueue.NewMessage(batch.ID, batchIDPayload(t, batch.ID), batch.Queue, nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() @@ -186,7 +186,7 @@ func TestController_Process_MultipleRequests_MinScore(t *testing.T) { controller := newTestController(t, ctrl, store, mockScorer, nil) - msg := queue.NewMessage(batch.ID, batchIDPayload(t, batch.ID), batch.Queue, nil) + msg := entityqueue.NewMessage(batch.ID, batchIDPayload(t, batch.ID), batch.Queue, nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() @@ -206,7 +206,7 @@ func TestController_Process_StorageFailure(t *testing.T) { mockScorer := scorermock.NewMockScorer(ctrl) controller := newTestController(t, ctrl, store, mockScorer, nil) - msg := queue.NewMessage("test-queue/batch/1", batchIDPayload(t, "test-queue/batch/1"), "test-queue", nil) + msg := entityqueue.NewMessage("test-queue/batch/1", batchIDPayload(t, "test-queue/batch/1"), "test-queue", nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() @@ -237,7 +237,7 @@ func TestController_Process_ScorerFailure(t *testing.T) { controller := newTestController(t, ctrl, store, mockScorer, nil) - msg := queue.NewMessage(batch.ID, batchIDPayload(t, batch.ID), batch.Queue, nil) + msg := entityqueue.NewMessage(batch.ID, batchIDPayload(t, batch.ID), batch.Queue, nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() @@ -268,7 +268,7 @@ func TestController_Process_UpdateScoreFailure(t *testing.T) { controller := newTestController(t, ctrl, store, mockScorer, nil) - msg := queue.NewMessage(batch.ID, batchIDPayload(t, batch.ID), batch.Queue, nil) + msg := entityqueue.NewMessage(batch.ID, batchIDPayload(t, batch.ID), batch.Queue, nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() @@ -289,7 +289,7 @@ func TestController_Process_PublishFailure(t *testing.T) { controller := newTestController(t, ctrl, store, mockScorer, fmt.Errorf("publish failed")) - msg := queue.NewMessage(batch.ID, batchIDPayload(t, batch.ID), batch.Queue, nil) + msg := entityqueue.NewMessage(batch.ID, batchIDPayload(t, batch.ID), batch.Queue, nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() @@ -356,7 +356,7 @@ func TestController_Process_TerminalShortCircuit(t *testing.T) { controller := NewController(logger, scope, mockStorage, mockScorer, registry, consumer.TopicKeyScore, "orchestrator-score") - msg := queue.NewMessage(batch.ID, batchIDPayload(t, batch.ID), batch.Queue, nil) + msg := entityqueue.NewMessage(batch.ID, batchIDPayload(t, batch.ID), batch.Queue, nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() @@ -404,7 +404,7 @@ func TestController_Process_CancellingShortCircuit(t *testing.T) { controller := NewController(logger, scope, mockStorage, mockScorer, registry, consumer.TopicKeyScore, "orchestrator-score") - msg := queue.NewMessage(batch.ID, batchIDPayload(t, batch.ID), batch.Queue, nil) + msg := entityqueue.NewMessage(batch.ID, batchIDPayload(t, batch.ID), batch.Queue, nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() diff --git a/submitqueue/orchestrator/controller/speculate/BUILD.bazel b/submitqueue/orchestrator/controller/speculate/BUILD.bazel index 6f95060c..70219689 100644 --- a/submitqueue/orchestrator/controller/speculate/BUILD.bazel +++ b/submitqueue/orchestrator/controller/speculate/BUILD.bazel @@ -7,7 +7,7 @@ go_library( visibility = ["//visibility:public"], deps = [ "//core/metrics", - "//entity/queue", + "//entity/messagequeue", "//submitqueue/core/consumer", "//submitqueue/entity", "//submitqueue/extension/storage", @@ -22,8 +22,8 @@ go_test( embed = [":speculate"], deps = [ "//core/errs", - "//entity/queue", - "//extension/queue/mock", + "//entity/messagequeue", + "//extension/messagequeue/mock", "//submitqueue/core/consumer", "//submitqueue/entity", "//submitqueue/extension/storage", diff --git a/submitqueue/orchestrator/controller/speculate/speculate.go b/submitqueue/orchestrator/controller/speculate/speculate.go index 395d7aab..05471979 100644 --- a/submitqueue/orchestrator/controller/speculate/speculate.go +++ b/submitqueue/orchestrator/controller/speculate/speculate.go @@ -21,7 +21,7 @@ import ( "github.com/uber-go/tally/v4" "github.com/uber/submitqueue/core/metrics" - entityqueue "github.com/uber/submitqueue/entity/queue" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" "github.com/uber/submitqueue/submitqueue/core/consumer" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/storage" diff --git a/submitqueue/orchestrator/controller/speculate/speculate_test.go b/submitqueue/orchestrator/controller/speculate/speculate_test.go index ad30d91e..2342bd17 100644 --- a/submitqueue/orchestrator/controller/speculate/speculate_test.go +++ b/submitqueue/orchestrator/controller/speculate/speculate_test.go @@ -23,8 +23,8 @@ import ( "github.com/stretchr/testify/require" "github.com/uber-go/tally/v4" "github.com/uber/submitqueue/core/errs" - "github.com/uber/submitqueue/entity/queue" - queuemock "github.com/uber/submitqueue/extension/queue/mock" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" + queuemock "github.com/uber/submitqueue/extension/messagequeue/mock" "github.com/uber/submitqueue/submitqueue/core/consumer" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/storage" @@ -59,7 +59,7 @@ func newTestController(t *testing.T, ctrl *gomock.Controller, store *storagemock mockPub := queuemock.NewMockPublisher(ctrl) mockPub.EXPECT().Publish(gomock.Any(), gomock.Any(), gomock.Any()).DoAndReturn( - func(ctx context.Context, topic string, msg queue.Message) error { + func(ctx context.Context, topic string, msg entityqueue.Message) error { return publishErr }, ).AnyTimes() @@ -82,7 +82,7 @@ func newTestController(t *testing.T, ctrl *gomock.Controller, store *storagemock // runProcess builds a delivery for batchID and invokes Process once. func runProcess(t *testing.T, ctrl *gomock.Controller, controller *Controller, batchID string) error { - msg := queue.NewMessage(batchID, batchIDPayload(t, batchID), "test-queue", nil) + msg := entityqueue.NewMessage(batchID, batchIDPayload(t, batchID), "test-queue", nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() @@ -314,7 +314,7 @@ func TestController_Process_CancelledTerminalSelfHealsDependents(t *testing.T) { var records []pubRec mockPub := queuemock.NewMockPublisher(ctrl) mockPub.EXPECT().Publish(gomock.Any(), gomock.Any(), gomock.Any()).DoAndReturn( - func(_ context.Context, topic string, msg queue.Message) error { + func(_ context.Context, topic string, msg entityqueue.Message) error { records = append(records, pubRec{topic: topic, msgID: msg.ID}) return nil }).AnyTimes() @@ -382,7 +382,7 @@ func TestController_Process_CancellingTerminalFlow(t *testing.T) { var records []pubRec mockPub := queuemock.NewMockPublisher(ctrl) mockPub.EXPECT().Publish(gomock.Any(), gomock.Any(), gomock.Any()).DoAndReturn( - func(_ context.Context, topic string, msg queue.Message) error { + func(_ context.Context, topic string, msg entityqueue.Message) error { records = append(records, pubRec{topic: topic, msgID: msg.ID}) return nil }).AnyTimes() @@ -611,7 +611,7 @@ func TestController_Process_BadPayload(t *testing.T) { store := storagemock.NewMockStorage(ctrl) controller := newTestController(t, ctrl, store, nil) - msg := queue.NewMessage("anything", []byte("not-json"), "test-queue", nil) + msg := entityqueue.NewMessage("anything", []byte("not-json"), "test-queue", nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() diff --git a/submitqueue/orchestrator/controller/start/BUILD.bazel b/submitqueue/orchestrator/controller/start/BUILD.bazel index 356a51f6..b82b9990 100644 --- a/submitqueue/orchestrator/controller/start/BUILD.bazel +++ b/submitqueue/orchestrator/controller/start/BUILD.bazel @@ -7,7 +7,7 @@ go_library( visibility = ["//visibility:public"], deps = [ "//core/metrics", - "//entity/queue", + "//entity/messagequeue", "//submitqueue/core/consumer", "//submitqueue/core/request", "//submitqueue/entity", @@ -24,8 +24,8 @@ go_test( embed = [":start"], deps = [ "//core/errs", - "//entity/queue", - "//extension/queue/mock", + "//entity/messagequeue", + "//extension/messagequeue/mock", "//submitqueue/core/consumer", "//submitqueue/entity", "//submitqueue/extension/changestore/mock", diff --git a/submitqueue/orchestrator/controller/start/start.go b/submitqueue/orchestrator/controller/start/start.go index e1bc59e7..5349835f 100644 --- a/submitqueue/orchestrator/controller/start/start.go +++ b/submitqueue/orchestrator/controller/start/start.go @@ -22,7 +22,7 @@ import ( "github.com/uber-go/tally/v4" "github.com/uber/submitqueue/core/metrics" - entityqueue "github.com/uber/submitqueue/entity/queue" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" "github.com/uber/submitqueue/submitqueue/core/consumer" corerequest "github.com/uber/submitqueue/submitqueue/core/request" "github.com/uber/submitqueue/submitqueue/entity" diff --git a/submitqueue/orchestrator/controller/start/start_test.go b/submitqueue/orchestrator/controller/start/start_test.go index 342657d7..05995542 100644 --- a/submitqueue/orchestrator/controller/start/start_test.go +++ b/submitqueue/orchestrator/controller/start/start_test.go @@ -23,8 +23,8 @@ import ( "github.com/stretchr/testify/require" "github.com/uber-go/tally/v4" "github.com/uber/submitqueue/core/errs" - "github.com/uber/submitqueue/entity/queue" - queuemock "github.com/uber/submitqueue/extension/queue/mock" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" + queuemock "github.com/uber/submitqueue/extension/messagequeue/mock" "github.com/uber/submitqueue/submitqueue/core/consumer" "github.com/uber/submitqueue/submitqueue/entity" changemock "github.com/uber/submitqueue/submitqueue/extension/changestore/mock" @@ -47,7 +47,7 @@ func newTestController( mockPub := queuemock.NewMockPublisher(ctrl) mockPub.EXPECT().Publish(gomock.Any(), gomock.Any(), gomock.Any()).DoAndReturn( - func(ctx context.Context, topic string, msg queue.Message) error { + func(ctx context.Context, topic string, msg entityqueue.Message) error { return publishErr }, ).AnyTimes() @@ -88,7 +88,7 @@ func makeDelivery(t *testing.T, ctrl *gomock.Controller, lr entity.LandRequest) payload, err := lr.ToBytes() require.NoError(t, err) - msg := queue.NewMessage(lr.ID, payload, lr.Queue, nil) + msg := entityqueue.NewMessage(lr.ID, payload, lr.Queue, nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() @@ -124,7 +124,7 @@ func TestController_Process_InvalidJSON(t *testing.T) { controller := newTestController(t, ctrl, newMockStorage(ctrl), newMockChangeStore(ctrl), nil) invalidPayload := []byte(`{"invalid": json"}`) - msg := queue.NewMessage("invalid-msg", invalidPayload, "partition1", nil) + msg := entityqueue.NewMessage("invalid-msg", invalidPayload, "partition1", nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() diff --git a/submitqueue/orchestrator/controller/validate/BUILD.bazel b/submitqueue/orchestrator/controller/validate/BUILD.bazel index 7f7631be..91275d9c 100644 --- a/submitqueue/orchestrator/controller/validate/BUILD.bazel +++ b/submitqueue/orchestrator/controller/validate/BUILD.bazel @@ -8,7 +8,7 @@ go_library( deps = [ "//core/errs", "//core/metrics", - "//entity/queue", + "//entity/messagequeue", "//submitqueue/core/consumer", "//submitqueue/entity", "//submitqueue/extension/changeprovider", @@ -26,8 +26,8 @@ go_test( embed = [":validate"], deps = [ "//core/errs", - "//entity/queue", - "//extension/queue/mock", + "//entity/messagequeue", + "//extension/messagequeue/mock", "//submitqueue/core/consumer", "//submitqueue/entity", "//submitqueue/extension/changeprovider", diff --git a/submitqueue/orchestrator/controller/validate/validate.go b/submitqueue/orchestrator/controller/validate/validate.go index 56056aaa..786dc9fd 100644 --- a/submitqueue/orchestrator/controller/validate/validate.go +++ b/submitqueue/orchestrator/controller/validate/validate.go @@ -22,7 +22,7 @@ import ( "github.com/uber-go/tally/v4" "github.com/uber/submitqueue/core/errs" coremetrics "github.com/uber/submitqueue/core/metrics" - entityqueue "github.com/uber/submitqueue/entity/queue" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" "github.com/uber/submitqueue/submitqueue/core/consumer" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/changeprovider" @@ -123,7 +123,7 @@ func (c *Controller) Process(ctx context.Context, delivery consumer.Delivery) (r // Duplicate detection: look for any other in-flight request that has already // claimed an overlapping URI in this queue. Per-queue partition leasing - // (see core/consumer + extension/queue) guarantees serial processing within + // (see core/consumer + extension/messagequeue) guarantees serial processing within // a queue, so the read-then-claim sequence below is race-free. if dupID, err := c.checkDuplicate(ctx, request); err != nil { return err diff --git a/submitqueue/orchestrator/controller/validate/validate_test.go b/submitqueue/orchestrator/controller/validate/validate_test.go index 45c46f2b..82f98988 100644 --- a/submitqueue/orchestrator/controller/validate/validate_test.go +++ b/submitqueue/orchestrator/controller/validate/validate_test.go @@ -23,8 +23,8 @@ import ( "github.com/stretchr/testify/require" "github.com/uber-go/tally/v4" "github.com/uber/submitqueue/core/errs" - "github.com/uber/submitqueue/entity/queue" - queuemock "github.com/uber/submitqueue/extension/queue/mock" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" + queuemock "github.com/uber/submitqueue/extension/messagequeue/mock" "github.com/uber/submitqueue/submitqueue/core/consumer" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/changeprovider" @@ -103,7 +103,7 @@ func newTestController( mockPub := queuemock.NewMockPublisher(ctrl) mockPub.EXPECT().Publish(gomock.Any(), gomock.Any(), gomock.Any()).DoAndReturn( - func(ctx context.Context, topic string, msg queue.Message) error { + func(ctx context.Context, topic string, msg entityqueue.Message) error { return publishErr }, ).AnyTimes() @@ -156,7 +156,7 @@ func TestController_Process_Success(t *testing.T) { store, _ := newMockStorage(ctrl, request) controller := newTestController(t, ctrl, store, newMockChangeStore(ctrl), mc, nil) - msg := queue.NewMessage("test-queue/123", requestIDPayload(t, request.ID), "test-queue", nil) + msg := entityqueue.NewMessage("test-queue/123", requestIDPayload(t, request.ID), "test-queue", nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() @@ -175,7 +175,7 @@ func TestController_Process_StorageFailure(t *testing.T) { controller := newTestController(t, ctrl, store, newMockChangeStore(ctrl), mc, nil) - msg := queue.NewMessage("test-queue/123", requestIDPayload(t, "test-queue/123"), "test-queue", nil) + msg := entityqueue.NewMessage("test-queue/123", requestIDPayload(t, "test-queue/123"), "test-queue", nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() @@ -201,7 +201,7 @@ func TestController_Process_PublishFailure(t *testing.T) { controller := newTestController(t, ctrl, store, newMockChangeStore(ctrl), mc, fmt.Errorf("publish failed")) - msg := queue.NewMessage(request.ID, requestIDPayload(t, request.ID), request.Queue, nil) + msg := entityqueue.NewMessage(request.ID, requestIDPayload(t, request.ID), request.Queue, nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() @@ -236,7 +236,7 @@ func TestController_Process_NotMergeable(t *testing.T) { store, _ := newMockStorage(ctrl, request) controller := newTestController(t, ctrl, store, newMockChangeStore(ctrl), mc, nil) - msg := queue.NewMessage(request.ID, requestIDPayload(t, request.ID), request.Queue, nil) + msg := entityqueue.NewMessage(request.ID, requestIDPayload(t, request.ID), request.Queue, nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() @@ -263,7 +263,7 @@ func TestController_Process_MergeCheckError(t *testing.T) { store, _ := newMockStorage(ctrl, request) controller := newTestController(t, ctrl, store, newMockChangeStore(ctrl), mc, nil) - msg := queue.NewMessage(request.ID, requestIDPayload(t, request.ID), request.Queue, nil) + msg := entityqueue.NewMessage(request.ID, requestIDPayload(t, request.ID), request.Queue, nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() @@ -424,7 +424,7 @@ func TestController_Process_DuplicateDetection(t *testing.T) { controller := newTestController(t, ctrl, store, cs, mc, nil) - msg := queue.NewMessage(request.ID, requestIDPayload(t, request.ID), request.Queue, nil) + msg := entityqueue.NewMessage(request.ID, requestIDPayload(t, request.ID), request.Queue, nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() @@ -464,7 +464,7 @@ func TestController_Process_ChangeStoreQueryFailure(t *testing.T) { controller := newTestController(t, ctrl, store, cs, mc, nil) - msg := queue.NewMessage(request.ID, requestIDPayload(t, request.ID), request.Queue, nil) + msg := entityqueue.NewMessage(request.ID, requestIDPayload(t, request.ID), request.Queue, nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() @@ -504,7 +504,7 @@ func TestController_Process_TerminalShortCircuit(t *testing.T) { // which the require.NoError below will catch. controller := newTestController(t, ctrl, store, cs, mc, fmt.Errorf("should not publish")) - msg := queue.NewMessage(request.ID, requestIDPayload(t, request.ID), request.Queue, nil) + msg := entityqueue.NewMessage(request.ID, requestIDPayload(t, request.ID), request.Queue, nil) delivery := queuemock.NewMockDelivery(ctrl) delivery.EXPECT().Message().Return(msg).AnyTimes() delivery.EXPECT().Attempt().Return(1).AnyTimes() diff --git a/test/e2e/submitqueue/BUILD.bazel b/test/e2e/submitqueue/BUILD.bazel index 24d6537e..e6c24d41 100644 --- a/test/e2e/submitqueue/BUILD.bazel +++ b/test/e2e/submitqueue/BUILD.bazel @@ -7,9 +7,9 @@ go_test( "//:MODULE.bazel", "//:go.mod", "//example/submitqueue:docker-compose.yml", - "//extension/queue/mysql/schema", + "//extension/counter/mysql/schema", + "//extension/messagequeue/mysql/schema", "//submitqueue/extension/changestore/mysql/schema", - "//submitqueue/extension/counter/mysql/schema", "//submitqueue/extension/storage/mysql/schema", ], tags = [ diff --git a/test/e2e/submitqueue/suite_test.go b/test/e2e/submitqueue/suite_test.go index 181cf1ce..1387da4b 100644 --- a/test/e2e/submitqueue/suite_test.go +++ b/test/e2e/submitqueue/suite_test.go @@ -86,11 +86,11 @@ func (s *E2EIntegrationSuite) SetupSuite() { // Apply schemas programmatically to application database testutil.ApplySchema(t, s.log, s.db, testutil.SchemaDir("submitqueue/extension/storage/mysql/schema")) - testutil.ApplySchema(t, s.log, s.db, testutil.SchemaDir("submitqueue/extension/counter/mysql/schema")) + testutil.ApplySchema(t, s.log, s.db, testutil.SchemaDir("extension/counter/mysql/schema")) testutil.ApplySchema(t, s.log, s.db, testutil.SchemaDir("submitqueue/extension/changestore/mysql/schema")) // Apply schemas programmatically to queue database - testutil.ApplySchema(t, s.log, s.queueDB, testutil.SchemaDir("extension/queue/mysql/schema")) + testutil.ApplySchema(t, s.log, s.queueDB, testutil.SchemaDir("extension/messagequeue/mysql/schema")) s.log.Logf("Schemas applied successfully") diff --git a/test/integration/submitqueue/extension/counter/BUILD.bazel b/test/integration/extension/counter/BUILD.bazel similarity index 71% rename from test/integration/submitqueue/extension/counter/BUILD.bazel rename to test/integration/extension/counter/BUILD.bazel index bce7d8df..3e502f51 100644 --- a/test/integration/submitqueue/extension/counter/BUILD.bazel +++ b/test/integration/extension/counter/BUILD.bazel @@ -3,10 +3,10 @@ load("@rules_go//go:def.bzl", "go_library") go_library( name = "counter", srcs = ["suite.go"], - importpath = "github.com/uber/submitqueue/test/integration/submitqueue/extension/counter", + importpath = "github.com/uber/submitqueue/test/integration/extension/counter", visibility = ["//visibility:public"], deps = [ - "//submitqueue/extension/counter", + "//extension/counter", "//test/testutil", "@com_github_stretchr_testify//assert", "@com_github_stretchr_testify//require", diff --git a/test/integration/submitqueue/extension/counter/mysql/BUILD.bazel b/test/integration/extension/counter/mysql/BUILD.bazel similarity index 73% rename from test/integration/submitqueue/extension/counter/mysql/BUILD.bazel rename to test/integration/extension/counter/mysql/BUILD.bazel index b72e3e87..c02dc5a2 100644 --- a/test/integration/submitqueue/extension/counter/mysql/BUILD.bazel +++ b/test/integration/extension/counter/mysql/BUILD.bazel @@ -5,15 +5,15 @@ go_test( srcs = ["counter_test.go"], data = [ "docker-compose.yml", - "//submitqueue/extension/counter/mysql/schema", + "//extension/counter/mysql/schema", ], tags = [ "external", "integration", ], deps = [ - "//submitqueue/extension/counter/mysql", - "//test/integration/submitqueue/extension/counter", + "//extension/counter/mysql", + "//test/integration/extension/counter", "//test/testutil", "@com_github_go_sql_driver_mysql//:mysql", "@com_github_stretchr_testify//require", diff --git a/test/integration/submitqueue/extension/counter/mysql/counter_test.go b/test/integration/extension/counter/mysql/counter_test.go similarity index 88% rename from test/integration/submitqueue/extension/counter/mysql/counter_test.go rename to test/integration/extension/counter/mysql/counter_test.go index 0af96cf2..15615683 100644 --- a/test/integration/submitqueue/extension/counter/mysql/counter_test.go +++ b/test/integration/extension/counter/mysql/counter_test.go @@ -23,8 +23,8 @@ import ( "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" "github.com/uber-go/tally/v4" - mysqlcounter "github.com/uber/submitqueue/submitqueue/extension/counter/mysql" - countersuite "github.com/uber/submitqueue/test/integration/submitqueue/extension/counter" + mysqlcounter "github.com/uber/submitqueue/extension/counter/mysql" + countersuite "github.com/uber/submitqueue/test/integration/extension/counter" "github.com/uber/submitqueue/test/testutil" ) @@ -54,7 +54,7 @@ func (s *MySQLCounterIntegrationSuite) SetupSuite() { s.log, ctx, "docker-compose.yml", - "ext-submitqueue-counter-mysql", // Test context for meaningful container names + "ext-counter-mysql", // Test context for meaningful container names ) // Start the compose stack (MySQL only, no schema) @@ -68,7 +68,7 @@ func (s *MySQLCounterIntegrationSuite) SetupSuite() { require.NoError(t, err, "failed to connect to MySQL") // Apply schemas programmatically from directory - schemaDir := testutil.SchemaDir("submitqueue/extension/counter/mysql/schema") + schemaDir := testutil.SchemaDir("extension/counter/mysql/schema") testutil.ApplySchema(t, s.log, s.db, schemaDir) s.log.Logf("Schemas applied successfully") diff --git a/test/integration/submitqueue/extension/counter/mysql/docker-compose.yml b/test/integration/extension/counter/mysql/docker-compose.yml similarity index 100% rename from test/integration/submitqueue/extension/counter/mysql/docker-compose.yml rename to test/integration/extension/counter/mysql/docker-compose.yml diff --git a/test/integration/submitqueue/extension/counter/suite.go b/test/integration/extension/counter/suite.go similarity index 98% rename from test/integration/submitqueue/extension/counter/suite.go rename to test/integration/extension/counter/suite.go index 26401b6c..a0f04ae5 100644 --- a/test/integration/submitqueue/extension/counter/suite.go +++ b/test/integration/extension/counter/suite.go @@ -21,7 +21,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" - "github.com/uber/submitqueue/submitqueue/extension/counter" + "github.com/uber/submitqueue/extension/counter" "github.com/uber/submitqueue/test/testutil" ) diff --git a/test/integration/extension/queue/mysql/BUILD.bazel b/test/integration/extension/messagequeue/mysql/BUILD.bazel similarity index 72% rename from test/integration/extension/queue/mysql/BUILD.bazel rename to test/integration/extension/messagequeue/mysql/BUILD.bazel index 56338e29..f30878f6 100644 --- a/test/integration/extension/queue/mysql/BUILD.bazel +++ b/test/integration/extension/messagequeue/mysql/BUILD.bazel @@ -5,17 +5,17 @@ go_test( srcs = ["queue_test.go"], data = [ "docker-compose.yml", - "//extension/queue/mysql/schema", + "//extension/messagequeue/mysql/schema", ], tags = [ "external", "integration", ], deps = [ - "//entity/queue", - "//extension/queue", - "//extension/queue/mysql", - "//extension/queue/mysql/ctl/lib", + "//entity/messagequeue", + "//extension/messagequeue", + "//extension/messagequeue/mysql", + "//extension/messagequeue/mysql/ctl/lib", "//test/testutil", "@com_github_go_sql_driver_mysql//:mysql", "@com_github_stretchr_testify//assert", diff --git a/test/integration/extension/queue/mysql/README.md b/test/integration/extension/messagequeue/mysql/README.md similarity index 100% rename from test/integration/extension/queue/mysql/README.md rename to test/integration/extension/messagequeue/mysql/README.md diff --git a/test/integration/extension/queue/mysql/docker-compose.yml b/test/integration/extension/messagequeue/mysql/docker-compose.yml similarity index 100% rename from test/integration/extension/queue/mysql/docker-compose.yml rename to test/integration/extension/messagequeue/mysql/docker-compose.yml diff --git a/test/integration/extension/queue/mysql/queue_test.go b/test/integration/extension/messagequeue/mysql/queue_test.go similarity index 93% rename from test/integration/extension/queue/mysql/queue_test.go rename to test/integration/extension/messagequeue/mysql/queue_test.go index 728711ef..02c4d11e 100644 --- a/test/integration/extension/queue/mysql/queue_test.go +++ b/test/integration/extension/messagequeue/mysql/queue_test.go @@ -30,10 +30,10 @@ import ( "github.com/uber-go/tally/v4" "go.uber.org/zap/zaptest" - "github.com/uber/submitqueue/entity/queue" - extqueue "github.com/uber/submitqueue/extension/queue" - queueMySQL "github.com/uber/submitqueue/extension/queue/mysql" - queueAdmin "github.com/uber/submitqueue/extension/queue/mysql/ctl/lib" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" + extqueue "github.com/uber/submitqueue/extension/messagequeue" + queueMySQL "github.com/uber/submitqueue/extension/messagequeue/mysql" + queueAdmin "github.com/uber/submitqueue/extension/messagequeue/mysql/ctl/lib" "github.com/uber/submitqueue/test/testutil" ) @@ -66,7 +66,7 @@ func (s *SQLQueueIntegrationSuite) SetupSuite() { s.log, s.ctx, "docker-compose.yml", - "ext-queue-sql", // Test context for meaningful container names + "ext-messagequeue-sql", // Test context for meaningful container names ) // Start the compose stack (MySQL only, no schema) @@ -82,7 +82,7 @@ func (s *SQLQueueIntegrationSuite) SetupSuite() { s.log.Logf("Connected to MySQL for queue testing") // Apply schemas programmatically from directory (queue has 3 schema files) - schemaDir := testutil.SchemaDir("extension/queue/mysql/schema") + schemaDir := testutil.SchemaDir("extension/messagequeue/mysql/schema") testutil.ApplySchema(t, s.log, s.db, schemaDir) s.log.Logf("Schemas applied successfully") @@ -243,13 +243,13 @@ func (s *SQLQueueIntegrationSuite) TestPublishAndSubscribe() { require.NoError(t, err) // Publish messages with various metadata scenarios - msg1 := queue.NewMessage("msg-1", []byte("hello"), "partition-1", map[string]string{ + msg1 := entityqueue.NewMessage("msg-1", []byte("hello"), "partition-1", map[string]string{ "key1": "value1", "key2": "value2", "trace_id": "abc123", }) - msg2 := queue.NewMessage("msg-2", []byte("world"), "partition-1", nil) + msg2 := entityqueue.NewMessage("msg-2", []byte("world"), "partition-1", nil) err = publisher.Publish(s.ctx, topic, msg1) require.NoError(t, err) @@ -314,8 +314,8 @@ func (s *SQLQueueIntegrationSuite) TestSubscriberPerPartitionIsolation() { require.NoError(t, err) // Publish 1 message to partition-a and 1 to partition-b - msgA := queue.NewMessage("iso-msg-a", []byte("data-a"), "partition-a", nil) - msgB := queue.NewMessage("iso-msg-b", []byte("data-b"), "partition-b", nil) + msgA := entityqueue.NewMessage("iso-msg-a", []byte("data-a"), "partition-a", nil) + msgB := entityqueue.NewMessage("iso-msg-b", []byte("data-b"), "partition-b", nil) require.NoError(t, publisher.Publish(s.ctx, topic, msgA)) require.NoError(t, publisher.Publish(s.ctx, topic, msgB)) t.Logf("Published 1 message to partition-a and 1 to partition-b") @@ -369,7 +369,7 @@ func (s *SQLQueueIntegrationSuite) TestSubscriberPartitionOrderPreserved() { for i := 0; i < numMessages; i++ { msgID := fmt.Sprintf("order-msg-%03d", i) publishedIDs[i] = msgID - msg := queue.NewMessage(msgID, []byte(fmt.Sprintf("payload-%d", i)), partitionKey, nil) + msg := entityqueue.NewMessage(msgID, []byte(fmt.Sprintf("payload-%d", i)), partitionKey, nil) require.NoError(t, publisher.Publish(s.ctx, topic, msg)) } t.Logf("Published %d messages to partition %s", numMessages, partitionKey) @@ -424,8 +424,8 @@ func (s *SQLQueueIntegrationSuite) TestMultiplePartitions() { expectedCount := len(partitions) * 2 // 2 messages per partition for _, partition := range partitions { - msg1 := queue.NewMessage(partition+"-msg-1", []byte("data-1"), partition, nil) - msg2 := queue.NewMessage(partition+"-msg-2", []byte("data-2"), partition, nil) + msg1 := entityqueue.NewMessage(partition+"-msg-1", []byte("data-1"), partition, nil) + msg2 := entityqueue.NewMessage(partition+"-msg-2", []byte("data-2"), partition, nil) require.NoError(t, publisher.Publish(s.ctx, topic, msg1)) require.NoError(t, publisher.Publish(s.ctx, topic, msg2)) @@ -469,7 +469,7 @@ func (s *SQLQueueIntegrationSuite) TestVisibilityTimeoutAndRetry() { require.NoError(t, err) // Publish a message - msg := queue.NewMessage("retry-msg", []byte("test"), "retry-partition", nil) + msg := entityqueue.NewMessage("retry-msg", []byte("test"), "retry-partition", nil) require.NoError(t, publisher.Publish(s.ctx, topic, msg)) t.Logf("Published message, expecting visibility timeout retry") @@ -504,7 +504,7 @@ func (s *SQLQueueIntegrationSuite) TestVisibilityTimeoutAndRetry() { t.Logf("Test 2: Visibility timeout retry") // Publish another message - msg2 := queue.NewMessage("retry-msg-2", []byte("test2"), "retry-partition", nil) + msg2 := entityqueue.NewMessage("retry-msg-2", []byte("test2"), "retry-partition", nil) require.NoError(t, publisher.Publish(s.ctx, topic, msg2)) // Receive first time @@ -547,7 +547,7 @@ func (s *SQLQueueIntegrationSuite) TestNackWithDelay() { require.NoError(t, err) // Publish message - msg := queue.NewMessage("nack-msg", []byte("test"), "nack-partition", nil) + msg := entityqueue.NewMessage("nack-msg", []byte("test"), "nack-partition", nil) require.NoError(t, publisher.Publish(s.ctx, topic, msg)) // Receive and Nack with delay @@ -589,7 +589,7 @@ func (s *SQLQueueIntegrationSuite) TestIdempotentPublish() { require.NoError(t, err) // Publish same message twice - msg := queue.NewMessage("same-id", []byte("duplicate"), "same-partition", nil) + msg := entityqueue.NewMessage("same-id", []byte("duplicate"), "same-partition", nil) err1 := publisher.Publish(s.ctx, topic, msg) require.NoError(t, err1) @@ -643,7 +643,7 @@ func (s *SQLQueueIntegrationSuite) TestConcurrentPublishers() { for i := 0; i < numPublishers; i++ { go func(publisherID int) { for j := 0; j < messagesPerPublisher; j++ { - msg := queue.NewMessage( + msg := entityqueue.NewMessage( t.Name()+"-"+string(rune(publisherID))+"-"+string(rune(j)), []byte("concurrent"), "concurrent-partition", @@ -692,7 +692,7 @@ func (s *SQLQueueIntegrationSuite) TestCrashRecovery() { require.NoError(t, err) // Publish message - msg := queue.NewMessage("crash-msg", []byte("test-crash"), "crash-partition", nil) + msg := entityqueue.NewMessage("crash-msg", []byte("test-crash"), "crash-partition", nil) require.NoError(t, publisher.Publish(s.ctx, topic, msg)) // Worker 1 receives but doesn't ack (simulating crash) @@ -773,7 +773,7 @@ func (s *SQLQueueIntegrationSuite) TestMultipleConsumerGroups() { for i := 0; i < numMessages; i++ { msgID := fmt.Sprintf("msg-%d", i) messageIDs[i] = msgID - msg := queue.NewMessage(msgID, []byte(fmt.Sprintf("data-%d", i)), "partition-1", nil) + msg := entityqueue.NewMessage(msgID, []byte(fmt.Sprintf("data-%d", i)), "partition-1", nil) require.NoError(t, publisher.Publish(s.ctx, topic, msg)) } t.Logf("Published %d messages to topic", numMessages) @@ -854,7 +854,7 @@ func (s *SQLQueueIntegrationSuite) TestMultipleWorkersInConsumerGroup() { messageIDs[i] = msgID // Use different partition keys to allow distribution partitionKey := fmt.Sprintf("partition-%d", i%3) - msg := queue.NewMessage(msgID, []byte(fmt.Sprintf("data-%d", i)), partitionKey, nil) + msg := entityqueue.NewMessage(msgID, []byte(fmt.Sprintf("data-%d", i)), partitionKey, nil) require.NoError(t, publisher.Publish(s.ctx, topic, msg)) } t.Logf("Published %d messages to topic across multiple partitions", numMessages) @@ -977,7 +977,7 @@ func (s *SQLQueueIntegrationSuite) TestConcurrentSubscribers() { for i := 0; i < totalMessages; i++ { msgID := fmt.Sprintf("concurrent-msg-%d", i) partitionKey := fmt.Sprintf("partition-%d", i%5) - msg := queue.NewMessage(msgID, []byte(fmt.Sprintf("data-%d", i)), partitionKey, nil) + msg := entityqueue.NewMessage(msgID, []byte(fmt.Sprintf("data-%d", i)), partitionKey, nil) require.NoError(t, publisher.Publish(s.ctx, topic, msg)) } t.Logf("Published %d messages", totalMessages) @@ -1062,7 +1062,7 @@ func (s *SQLQueueIntegrationSuite) TestDeadLetterQueue() { require.NoError(t, err) // Publish a message that will fail - msg := queue.NewMessage("poison-msg", []byte("poison"), "partition-1", nil) + msg := entityqueue.NewMessage("poison-msg", []byte("poison"), "partition-1", nil) require.NoError(t, publisher.Publish(s.ctx, topic, msg)) t.Logf("Published poison message, will nack repeatedly") @@ -1152,7 +1152,7 @@ func (s *SQLQueueIntegrationSuite) TestMessageOrderingWithinPartition() { for i := 0; i < numMessages; i++ { msgID := fmt.Sprintf("msg-%03d", i) messageIDs[i] = msgID - msg := queue.NewMessage(msgID, []byte(fmt.Sprintf("order-%d", i)), partitionKey, nil) + msg := entityqueue.NewMessage(msgID, []byte(fmt.Sprintf("order-%d", i)), partitionKey, nil) require.NoError(t, publisher.Publish(s.ctx, topic, msg)) } t.Logf("Published %d messages to same partition: %s", numMessages, partitionKey) @@ -1197,7 +1197,7 @@ func (s *SQLQueueIntegrationSuite) TestLateSubscriber() { for i := 0; i < numMessages; i++ { msgID := fmt.Sprintf("early-msg-%d", i) messageIDs[i] = msgID - msg := queue.NewMessage(msgID, []byte(fmt.Sprintf("data-%d", i)), "partition-1", nil) + msg := entityqueue.NewMessage(msgID, []byte(fmt.Sprintf("data-%d", i)), "partition-1", nil) require.NoError(t, publisher.Publish(s.ctx, topic, msg)) } t.Logf("Published %d messages BEFORE subscribing", numMessages) @@ -1258,7 +1258,7 @@ func (s *SQLQueueIntegrationSuite) TestEmptyTopicSubscribe() { // Now publish a message publisher := q.Publisher() - msg := queue.NewMessage("late-msg", []byte("data"), "partition-1", nil) + msg := entityqueue.NewMessage("late-msg", []byte("data"), "partition-1", nil) require.NoError(t, publisher.Publish(s.ctx, topic, msg)) t.Logf("Published message to previously-empty topic") @@ -1293,7 +1293,7 @@ func (s *SQLQueueIntegrationSuite) TestGracefulShutdownDuringProcessing() { // Publish messages numMessages := 5 for i := 0; i < numMessages; i++ { - msg := queue.NewMessage(fmt.Sprintf("msg-%d", i), []byte("data"), "partition-1", nil) + msg := entityqueue.NewMessage(fmt.Sprintf("msg-%d", i), []byte("data"), "partition-1", nil) require.NoError(t, publisher.Publish(s.ctx, topic, msg)) } t.Logf("Published %d messages", numMessages) @@ -1387,8 +1387,8 @@ func (s *SQLQueueIntegrationSuite) TestAdmin_ListTopicsAfterPublish() { // Publish messages publisher := q.Publisher() - require.NoError(t, publisher.Publish(s.ctx, topic, queue.NewMessage("msg-1", []byte("a"), "p1", nil))) - require.NoError(t, publisher.Publish(s.ctx, topic, queue.NewMessage("msg-2", []byte("b"), "p1", nil))) + require.NoError(t, publisher.Publish(s.ctx, topic, entityqueue.NewMessage("msg-1", []byte("a"), "p1", nil))) + require.NoError(t, publisher.Publish(s.ctx, topic, entityqueue.NewMessage("msg-2", []byte("b"), "p1", nil))) // Verify via AdminStore admin := queueAdmin.NewAdminStore(s.db) @@ -1416,9 +1416,9 @@ func (s *SQLQueueIntegrationSuite) TestAdmin_TopicStatsAfterPublish() { defer q.Close() publisher := q.Publisher() - require.NoError(t, publisher.Publish(s.ctx, topic, queue.NewMessage("s1", []byte("x"), "p1", nil))) - require.NoError(t, publisher.Publish(s.ctx, topic, queue.NewMessage("s2", []byte("y"), "p2", nil))) - require.NoError(t, publisher.Publish(s.ctx, topic, queue.NewMessage("s3", []byte("z"), "p2", nil))) + require.NoError(t, publisher.Publish(s.ctx, topic, entityqueue.NewMessage("s1", []byte("x"), "p1", nil))) + require.NoError(t, publisher.Publish(s.ctx, topic, entityqueue.NewMessage("s2", []byte("y"), "p2", nil))) + require.NoError(t, publisher.Publish(s.ctx, topic, entityqueue.NewMessage("s3", []byte("z"), "p2", nil))) admin := queueAdmin.NewAdminStore(s.db) stats, err := admin.GetTopicStats(s.ctx, topic, "_dlq") @@ -1443,7 +1443,7 @@ func (s *SQLQueueIntegrationSuite) TestAdmin_InspectMessage() { metadata := map[string]string{"env": "test", "trace": "abc"} publisher := q.Publisher() - require.NoError(t, publisher.Publish(s.ctx, topic, queue.NewMessage("inspect-1", []byte("payload-data"), "p1", metadata))) + require.NoError(t, publisher.Publish(s.ctx, topic, entityqueue.NewMessage("inspect-1", []byte("payload-data"), "p1", metadata))) admin := queueAdmin.NewAdminStore(s.db) detail, found, err := admin.InspectMessage(s.ctx, topic, "inspect-1") @@ -1470,9 +1470,9 @@ func (s *SQLQueueIntegrationSuite) TestAdmin_DeleteAndPurge() { defer q.Close() publisher := q.Publisher() - require.NoError(t, publisher.Publish(s.ctx, topic, queue.NewMessage("del-1", []byte("a"), "p1", nil))) - require.NoError(t, publisher.Publish(s.ctx, topic, queue.NewMessage("del-2", []byte("b"), "p1", nil))) - require.NoError(t, publisher.Publish(s.ctx, topic, queue.NewMessage("del-3", []byte("c"), "p1", nil))) + require.NoError(t, publisher.Publish(s.ctx, topic, entityqueue.NewMessage("del-1", []byte("a"), "p1", nil))) + require.NoError(t, publisher.Publish(s.ctx, topic, entityqueue.NewMessage("del-2", []byte("b"), "p1", nil))) + require.NoError(t, publisher.Publish(s.ctx, topic, entityqueue.NewMessage("del-3", []byte("c"), "p1", nil))) admin := queueAdmin.NewAdminStore(s.db) @@ -1514,7 +1514,7 @@ func (s *SQLQueueIntegrationSuite) TestAdmin_ConsumerLagAfterPartialAck() { // Publish 5 messages to same partition for i := 0; i < 5; i++ { - msg := queue.NewMessage(fmt.Sprintf("lag-%d", i), []byte("data"), "lag-partition", nil) + msg := entityqueue.NewMessage(fmt.Sprintf("lag-%d", i), []byte("data"), "lag-partition", nil) require.NoError(t, publisher.Publish(s.ctx, topic, msg)) } @@ -1566,7 +1566,7 @@ func (s *SQLQueueIntegrationSuite) TestAdmin_LeasesAndOffsets() { subscriber := q.Subscriber() // Publish and subscribe to create leases and offsets - require.NoError(t, publisher.Publish(s.ctx, topic, queue.NewMessage("lo-1", []byte("a"), "p1", nil))) + require.NoError(t, publisher.Publish(s.ctx, topic, entityqueue.NewMessage("lo-1", []byte("a"), "p1", nil))) subConfig := extqueue.DefaultSubscriptionConfig("admin-worker-1", consumerGroup) subConfig.PollIntervalMs = 100 @@ -1646,7 +1646,7 @@ func (s *SQLQueueIntegrationSuite) TestAdmin_ResetOffsetAndReleaseLease() { subscriber := q.Subscriber() // Publish, subscribe, ack — creates offsets and leases - require.NoError(t, publisher.Publish(s.ctx, topic, queue.NewMessage("r1", []byte("a"), "rp1", nil))) + require.NoError(t, publisher.Publish(s.ctx, topic, entityqueue.NewMessage("r1", []byte("a"), "rp1", nil))) subConfig := extqueue.DefaultSubscriptionConfig("reset-worker", consumerGroup) subConfig.PollIntervalMs = 100 @@ -1732,7 +1732,7 @@ func (s *SQLQueueIntegrationSuite) TestRebalance_EvenDistribution() { defer pubQ.Close() for i, pk := range partitions { - msg := queue.NewMessage(fmt.Sprintf("rb-even-%d", i), []byte("x"), pk, nil) + msg := entityqueue.NewMessage(fmt.Sprintf("rb-even-%d", i), []byte("x"), pk, nil) require.NoError(t, pubQ.Publisher().Publish(s.ctx, topic, msg)) } @@ -1788,7 +1788,7 @@ func (s *SQLQueueIntegrationSuite) TestRebalance_SubscriberLeaves() { defer pubQ.Close() for i, pk := range partitions { - msg := queue.NewMessage(fmt.Sprintf("rb-leave-%d", i), []byte("x"), pk, nil) + msg := entityqueue.NewMessage(fmt.Sprintf("rb-leave-%d", i), []byte("x"), pk, nil) require.NoError(t, pubQ.Publisher().Publish(s.ctx, topic, msg)) } @@ -1845,7 +1845,7 @@ func (s *SQLQueueIntegrationSuite) TestRebalance_OddPartitions() { defer pubQ.Close() for i, pk := range partitions { - msg := queue.NewMessage(fmt.Sprintf("rb-odd-%d", i), []byte("x"), pk, nil) + msg := entityqueue.NewMessage(fmt.Sprintf("rb-odd-%d", i), []byte("x"), pk, nil) require.NoError(t, pubQ.Publisher().Publish(s.ctx, topic, msg)) } @@ -1902,7 +1902,7 @@ func (s *SQLQueueIntegrationSuite) TestRebalance_NoOrphans() { defer pubQ.Close() for i, pk := range partitions { - msg := queue.NewMessage(fmt.Sprintf("rb-orphan-%d", i), []byte("x"), pk, nil) + msg := entityqueue.NewMessage(fmt.Sprintf("rb-orphan-%d", i), []byte("x"), pk, nil) require.NoError(t, pubQ.Publisher().Publish(s.ctx, topic, msg)) } @@ -1962,7 +1962,7 @@ func (s *SQLQueueIntegrationSuite) TestRebalance_MoreSubscribersThanPartitions() defer pubQ.Close() for i, pk := range partitions { - msg := queue.NewMessage(fmt.Sprintf("rb-excess-%d", i), []byte("x"), pk, nil) + msg := entityqueue.NewMessage(fmt.Sprintf("rb-excess-%d", i), []byte("x"), pk, nil) require.NoError(t, pubQ.Publisher().Publish(s.ctx, topic, msg)) } @@ -2025,7 +2025,7 @@ func (s *SQLQueueIntegrationSuite) TestNackDoesNotBlockOtherMessages() { // Publish 3 messages in order for i := 1; i <= 3; i++ { - msg := queue.NewMessage(fmt.Sprintf("msg-%d", i), []byte(fmt.Sprintf("payload-%d", i)), partition, nil) + msg := entityqueue.NewMessage(fmt.Sprintf("msg-%d", i), []byte(fmt.Sprintf("payload-%d", i)), partition, nil) require.NoError(t, q.Publisher().Publish(s.ctx, topic, msg)) } @@ -2077,7 +2077,7 @@ func (s *SQLQueueIntegrationSuite) TestBatchSizeOneStrictSerialization() { // Publish 5 messages for i := 1; i <= 5; i++ { - msg := queue.NewMessage(fmt.Sprintf("serial-%d", i), []byte(strconv.Itoa(i)), partition, nil) + msg := entityqueue.NewMessage(fmt.Sprintf("serial-%d", i), []byte(strconv.Itoa(i)), partition, nil) require.NoError(t, q.Publisher().Publish(s.ctx, topic, msg)) } @@ -2128,7 +2128,7 @@ func (s *SQLQueueIntegrationSuite) TestMultipleConsumerGroupsIndependentState() // Publish 2 messages for i := 1; i <= 2; i++ { - msg := queue.NewMessage(fmt.Sprintf("shared-%d", i), []byte(strconv.Itoa(i)), partition, nil) + msg := entityqueue.NewMessage(fmt.Sprintf("shared-%d", i), []byte(strconv.Itoa(i)), partition, nil) require.NoError(t, q.Publisher().Publish(s.ctx, topic, msg)) } @@ -2186,9 +2186,9 @@ func (s *SQLQueueIntegrationSuite) TestCrashAfterRejectDoesNotLoseMessages() { publisher := q1.Publisher() // Publish 3 messages to the same partition - require.NoError(t, publisher.Publish(s.ctx, topic, queue.NewMessage("msg-A", []byte("A"), "same-part", nil))) - require.NoError(t, publisher.Publish(s.ctx, topic, queue.NewMessage("msg-B", []byte("B"), "same-part", nil))) - require.NoError(t, publisher.Publish(s.ctx, topic, queue.NewMessage("msg-C", []byte("C"), "same-part", nil))) + require.NoError(t, publisher.Publish(s.ctx, topic, entityqueue.NewMessage("msg-A", []byte("A"), "same-part", nil))) + require.NoError(t, publisher.Publish(s.ctx, topic, entityqueue.NewMessage("msg-B", []byte("B"), "same-part", nil))) + require.NoError(t, publisher.Publish(s.ctx, topic, entityqueue.NewMessage("msg-C", []byte("C"), "same-part", nil))) // Subscribe with short timeouts for fast test subConfig := testSubConfig("worker-1", "crash-reject-cg") @@ -2286,9 +2286,9 @@ func (s *SQLQueueIntegrationSuite) TestCrashAfterRetryLimitDoesNotLoseMessages() publisher := q1.Publisher() // Publish 3 messages to the same partition - require.NoError(t, publisher.Publish(s.ctx, topic, queue.NewMessage("msg-A", []byte("A"), "same-part", nil))) - require.NoError(t, publisher.Publish(s.ctx, topic, queue.NewMessage("msg-B", []byte("B"), "same-part", nil))) - require.NoError(t, publisher.Publish(s.ctx, topic, queue.NewMessage("msg-C", []byte("C"), "same-part", nil))) + require.NoError(t, publisher.Publish(s.ctx, topic, entityqueue.NewMessage("msg-A", []byte("A"), "same-part", nil))) + require.NoError(t, publisher.Publish(s.ctx, topic, entityqueue.NewMessage("msg-B", []byte("B"), "same-part", nil))) + require.NoError(t, publisher.Publish(s.ctx, topic, entityqueue.NewMessage("msg-C", []byte("C"), "same-part", nil))) // MaxAttempts=2: msg-B needs nack → redeliver → retry_count=2 → auto-DLQ. // Use standard visibility (2s) instead of 30s — event-driven waits make @@ -2391,7 +2391,7 @@ func (s *SQLQueueIntegrationSuite) TestWatermarkAdvancesContiguously() { // Publish 5 messages to the same partition for i := 1; i <= 5; i++ { - msg := queue.NewMessage( + msg := entityqueue.NewMessage( fmt.Sprintf("wm-msg-%d", i), []byte(fmt.Sprintf("payload-%d", i)), "wm-part", diff --git a/test/integration/stovepipe/gateway/BUILD.bazel b/test/integration/stovepipe/gateway/BUILD.bazel index 05bf4d98..a03d0fec 100644 --- a/test/integration/stovepipe/gateway/BUILD.bazel +++ b/test/integration/stovepipe/gateway/BUILD.bazel @@ -7,7 +7,7 @@ go_test( "//:MODULE.bazel", "//:go.mod", "//example/stovepipe/gateway/server:docker-compose.yml", - "//extension/queue/mysql/schema", + "//extension/messagequeue/mysql/schema", ], tags = [ "external", diff --git a/test/integration/stovepipe/gateway/suite_test.go b/test/integration/stovepipe/gateway/suite_test.go index 5874d60d..dfdc8bca 100644 --- a/test/integration/stovepipe/gateway/suite_test.go +++ b/test/integration/stovepipe/gateway/suite_test.go @@ -71,7 +71,7 @@ func (s *StovepipeGatewayIntegrationSuite) SetupSuite() { queueDB, err := s.stack.ConnectMySQLService("mysql-queue") require.NoError(t, err, "failed to connect to queue MySQL") - testutil.ApplySchema(t, s.log, queueDB, testutil.SchemaDir("extension/queue/mysql/schema")) + testutil.ApplySchema(t, s.log, queueDB, testutil.SchemaDir("extension/messagequeue/mysql/schema")) var conn *grpc.ClientConn conn, err = s.stack.ConnectGRPC("gateway-service", 8080) diff --git a/test/integration/submitqueue/core/consumer/BUILD.bazel b/test/integration/submitqueue/core/consumer/BUILD.bazel index 54d24c3f..9ebf35e2 100644 --- a/test/integration/submitqueue/core/consumer/BUILD.bazel +++ b/test/integration/submitqueue/core/consumer/BUILD.bazel @@ -5,16 +5,16 @@ go_test( srcs = ["consumer_test.go"], data = [ "docker-compose.yml", - "//extension/queue/mysql/schema", + "//extension/messagequeue/mysql/schema", ], tags = [ "external", "integration", ], deps = [ - "//entity/queue", - "//extension/queue", - "//extension/queue/mysql", + "//entity/messagequeue", + "//extension/messagequeue", + "//extension/messagequeue/mysql", "//submitqueue/core/consumer", "//test/testutil", "@com_github_go_sql_driver_mysql//:mysql", diff --git a/test/integration/submitqueue/core/consumer/consumer_test.go b/test/integration/submitqueue/core/consumer/consumer_test.go index cf7acf45..6bfc668a 100644 --- a/test/integration/submitqueue/core/consumer/consumer_test.go +++ b/test/integration/submitqueue/core/consumer/consumer_test.go @@ -14,9 +14,9 @@ import ( "github.com/uber-go/tally/v4" "go.uber.org/zap/zaptest" - "github.com/uber/submitqueue/entity/queue" - extqueue "github.com/uber/submitqueue/extension/queue" - queueMySQL "github.com/uber/submitqueue/extension/queue/mysql" + entityqueue "github.com/uber/submitqueue/entity/messagequeue" + extqueue "github.com/uber/submitqueue/extension/messagequeue" + queueMySQL "github.com/uber/submitqueue/extension/messagequeue/mysql" "github.com/uber/submitqueue/submitqueue/core/consumer" "github.com/uber/submitqueue/test/testutil" ) @@ -85,7 +85,7 @@ func (s *ConsumerIntegrationSuite) SetupSuite() { s.db, err = s.stack.ConnectMySQLService("mysql") require.NoError(t, err, "failed to connect to MySQL") - schemaDir := testutil.SchemaDir("extension/queue/mysql/schema") + schemaDir := testutil.SchemaDir("extension/messagequeue/mysql/schema") testutil.ApplySchema(t, s.log, s.db, schemaDir) t.Cleanup(func() { @@ -194,7 +194,7 @@ func (s *ConsumerIntegrationSuite) TestConsumerPerPartitionIsolation() { require.NoError(t, c.Start(s.ctx)) // Publish to partition-a, wait for it to start blocking - msgA := queue.NewMessage("iso-a", []byte("data-a"), "partition-a", nil) + msgA := entityqueue.NewMessage("iso-a", []byte("data-a"), "partition-a", nil) require.NoError(t, publisher.Publish(s.ctx, topicName, msgA)) select { @@ -205,7 +205,7 @@ func (s *ConsumerIntegrationSuite) TestConsumerPerPartitionIsolation() { } // Now publish to partition-b — should be processed even though partition-a is blocked - msgB := queue.NewMessage("iso-b", []byte("data-b"), "partition-b", nil) + msgB := entityqueue.NewMessage("iso-b", []byte("data-b"), "partition-b", nil) require.NoError(t, publisher.Publish(s.ctx, topicName, msgB)) select { @@ -240,7 +240,7 @@ func (s *ConsumerIntegrationSuite) TestConsumerPartitionOrdering() { for i := range numMessages { msgID := fmt.Sprintf("order-%03d", i) publishedIDs[i] = msgID - msg := queue.NewMessage(msgID, []byte(fmt.Sprintf("payload-%d", i)), "single-partition", nil) + msg := entityqueue.NewMessage(msgID, []byte(fmt.Sprintf("payload-%d", i)), "single-partition", nil) require.NoError(t, publisher.Publish(s.ctx, topicName, msg)) } s.log.Logf("Published %d messages to single-partition", numMessages) @@ -313,7 +313,7 @@ func (s *ConsumerIntegrationSuite) TestConsumerMultiPartitionThroughput() { numPartitions := 3 for i := range numPartitions { partition := fmt.Sprintf("tp-partition-%d", i) - msg := queue.NewMessage(fmt.Sprintf("tp-msg-%d", i), []byte("data"), partition, nil) + msg := entityqueue.NewMessage(fmt.Sprintf("tp-msg-%d", i), []byte("data"), partition, nil) require.NoError(t, publisher.Publish(s.ctx, topicName, msg)) } s.log.Logf("Published 1 message to each of %d partitions", numPartitions) diff --git a/test/integration/submitqueue/gateway/BUILD.bazel b/test/integration/submitqueue/gateway/BUILD.bazel index 4fa65343..6fe77784 100644 --- a/test/integration/submitqueue/gateway/BUILD.bazel +++ b/test/integration/submitqueue/gateway/BUILD.bazel @@ -7,8 +7,8 @@ go_test( "//:MODULE.bazel", "//:go.mod", "//example/submitqueue/gateway/server:docker-compose.yml", - "//extension/queue/mysql/schema", - "//submitqueue/extension/counter/mysql/schema", + "//extension/counter/mysql/schema", + "//extension/messagequeue/mysql/schema", "//submitqueue/extension/storage/mysql/schema", ], tags = [ diff --git a/test/integration/submitqueue/gateway/suite_test.go b/test/integration/submitqueue/gateway/suite_test.go index 70af7300..b8406262 100644 --- a/test/integration/submitqueue/gateway/suite_test.go +++ b/test/integration/submitqueue/gateway/suite_test.go @@ -85,10 +85,10 @@ func (s *GatewayIntegrationSuite) SetupSuite() { // Apply schemas programmatically to application database testutil.ApplySchema(t, s.log, s.db, testutil.SchemaDir("submitqueue/extension/storage/mysql/schema")) - testutil.ApplySchema(t, s.log, s.db, testutil.SchemaDir("submitqueue/extension/counter/mysql/schema")) + testutil.ApplySchema(t, s.log, s.db, testutil.SchemaDir("extension/counter/mysql/schema")) // Apply schemas programmatically to queue database - testutil.ApplySchema(t, s.log, s.queueDB, testutil.SchemaDir("extension/queue/mysql/schema")) + testutil.ApplySchema(t, s.log, s.queueDB, testutil.SchemaDir("extension/messagequeue/mysql/schema")) s.log.Logf("Schemas applied successfully") diff --git a/test/integration/submitqueue/orchestrator/BUILD.bazel b/test/integration/submitqueue/orchestrator/BUILD.bazel index 1cf6db45..6c12fdc7 100644 --- a/test/integration/submitqueue/orchestrator/BUILD.bazel +++ b/test/integration/submitqueue/orchestrator/BUILD.bazel @@ -7,8 +7,8 @@ go_test( "//:MODULE.bazel", "//:go.mod", "//example/submitqueue/orchestrator/server:docker-compose.yml", - "//extension/queue/mysql/schema", - "//submitqueue/extension/counter/mysql/schema", + "//extension/counter/mysql/schema", + "//extension/messagequeue/mysql/schema", "//submitqueue/extension/storage/mysql/schema", ], tags = [ diff --git a/test/integration/submitqueue/orchestrator/suite_test.go b/test/integration/submitqueue/orchestrator/suite_test.go index cbddb85c..0d65018b 100644 --- a/test/integration/submitqueue/orchestrator/suite_test.go +++ b/test/integration/submitqueue/orchestrator/suite_test.go @@ -85,10 +85,10 @@ func (s *OrchestratorIntegrationSuite) SetupSuite() { // Apply schemas programmatically to application database testutil.ApplySchema(t, s.log, s.db, testutil.SchemaDir("submitqueue/extension/storage/mysql/schema")) - testutil.ApplySchema(t, s.log, s.db, testutil.SchemaDir("submitqueue/extension/counter/mysql/schema")) + testutil.ApplySchema(t, s.log, s.db, testutil.SchemaDir("extension/counter/mysql/schema")) // Apply schemas programmatically to queue database - testutil.ApplySchema(t, s.log, s.queueDB, testutil.SchemaDir("extension/queue/mysql/schema")) + testutil.ApplySchema(t, s.log, s.queueDB, testutil.SchemaDir("extension/messagequeue/mysql/schema")) s.log.Logf("Schemas applied successfully") diff --git a/test/testutil/schema.go b/test/testutil/schema.go index 3b6df89f..44690b08 100644 --- a/test/testutil/schema.go +++ b/test/testutil/schema.go @@ -28,7 +28,7 @@ import ( // SchemaDir returns the path to a schema directory. // It checks for both Bazel runfiles and direct go test paths. -// relativePath should be like "submitqueue/extension/storage/mysql/schema" or "extension/queue/mysql/schema" +// relativePath should be like "submitqueue/extension/storage/mysql/schema" or "extension/messagequeue/mysql/schema" func SchemaDir(relativePath string) string { // Bazel runfiles path if dir := os.Getenv("TEST_SRCDIR"); dir != "" {