diff --git a/CLAUDE.md b/CLAUDE.md index d4075e45..0690f516 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -36,35 +36,39 @@ request.Version = newVersion ``` submitqueue/ # repo root (Go module github.com/uber/submitqueue) -├── core/ # SHARED cross-domain infrastructure (errs, httpclient, metrics) — no domain deps -├── entity/ # SHARED domain entities -│ └── queue/ # Queue-specific entities (Message) -├── extension/ # SHARED extensions -│ └── queue/ # Messaging queue abstraction (interface + mysql/) -├── submitqueue/ # SubmitQueue domain -│ ├── gateway/ # Gateway service (port 8081) - entry point -│ ├── orchestrator/ # Orchestrator service (port 8082) - coordinates jobs -│ ├── entity/ # SubmitQueue-specific domain entities -│ ├── extension/ # SubmitQueue-specific extension impls (storage, counter, mergechecker, ...) -│ └── core/ # SubmitQueue-internal shared infra (consumer, request) -├── stovepipe/ # Stovepipe domain -│ ├── gateway/ # Gateway service: commit deployment verification entry point -│ ├── orchestrator/ # Orchestrator service: commit verification pipeline -│ ├── entity/ # Stovepipe-specific domain entities -│ ├── extension/ # Stovepipe-specific extension impls -│ └── core/ # Stovepipe-internal shared infra (placeholder; mirrors submitqueue/core) -├── tool/ # Development and CI tooling +├── platform/ # SHARED cross-domain packages — no domain deps +│ ├── errs/, metrics/, consumer/, http/ +│ ├── base/ # SHARED entities (change/, messagequeue/, …) +│ └── extension/ # SHARED extension contracts + backends (counter/, messagequeue/, …) +├── submitqueue/ # SubmitQueue domain +│ ├── gateway/ # Gateway service (port 8081) - entry point +│ ├── orchestrator/ # Orchestrator service (port 8082) - coordinates jobs +│ ├── entity/ # SubmitQueue-specific domain entities +│ ├── extension/ # SubmitQueue-specific extension impls (storage, counter, mergechecker, …) +│ └── core/ # SubmitQueue-internal shared infra (consumer wiring, request, topickey, …) +├── stovepipe/ # Stovepipe domain +│ ├── gateway/ # Gateway service: commit deployment verification entry point +│ ├── orchestrator/ # Orchestrator service: commit verification pipeline +│ ├── entity/ # Stovepipe-specific domain entities +│ ├── extension/ # Stovepipe-specific extension impls +│ └── core/ # Stovepipe-internal shared infra (placeholder; mirrors submitqueue/core) +├── tool/ # Development and CI tooling ├── example/ -│ ├── submitqueue/ # Runnable SubmitQueue servers/clients + Docker Compose -│ └── stovepipe/ # Runnable Stovepipe servers/clients +│ ├── submitqueue/ # Runnable SubmitQueue servers/clients + Docker Compose +│ └── stovepipe/ # Runnable Stovepipe servers/clients ├── test/ -│ ├── e2e/submitqueue/ # End-to-end tests (full stack) -│ ├── integration/ # Integration tests (core/, submitqueue/, stovepipe/) -│ └── testutil/ # Test utilities (ComposeStack, MySQL helpers) -└── doc/ # Documentation +│ ├── e2e/submitqueue/ # End-to-end tests (full stack) +│ ├── integration/ # Integration tests (platform/, submitqueue/, stovepipe/, …) +│ └── testutil/ # Test utilities (ComposeStack, MySQL helpers) +└── doc/ # Documentation ``` -The repo hosts shared building blocks at the top level — cross-domain infrastructure in `core/`, shared entities in `entity/`, shared extensions in `extension/` — followed by one folder per **domain** (`submitqueue/`, `stovepipe/`). Each domain owns the same internal layout (`gateway/`, `orchestrator/`, `entity/`, `extension/`, `core/`); a domain's own `core/` (e.g. `submitqueue/core/`) holds infra shared only between that domain's services. +The `platform/` tree holds code reused across domains (infrastructure, shared entities, shared extension contracts). Each **domain** (`submitqueue/`, `stovepipe/`, …) keeps the same internal layout (`gateway/`, `orchestrator/`, `entity/`, `extension/`, `core/`); a domain's own `core/` (e.g. `submitqueue/core/`) holds infra shared only between that domain's services. + +### Platform notes + +- Import path `github.com/uber/submitqueue/platform/http` uses Go package name `http` and aliases the standard library as `nethttp` inside the package. Source files that also import `net/http` should import the platform package with a distinct alias (for example `phttp "github.com/uber/submitqueue/platform/http"`) and call `phttp.NewClient`, `phttp.BaseURLTransport`, etc. +- `platform/base` is the shared entity root; subpackages (`change`, `messagequeue`, …) hold concrete types. The root `base` package is documentation-only. ### Services @@ -101,7 +105,7 @@ Controllers receive `consumer.Delivery` (subset interface without Ack/Nack) to e ### Entities -Domain objects in `entity/`, organized by domain. Guidelines: +Domain objects live under each domain's `entity/` tree, or under `platform/base/` when shared across domains. Guidelines: 1. Pure and framework-agnostic — no external dependencies 2. Value types, not references 3. `int64` milliseconds for timestamps (`CreatedAt int64`) and durations (`TimeoutMs int64`) @@ -112,17 +116,17 @@ Domain objects in `entity/`, organized by domain. Guidelines: ### Extensions Vendor-agnostic, pluggable interfaces with implementations in subdirectories: -1. Define interfaces at `extension/{ext}/` -2. Implementations at `extension/{ext}/{impl}/` -3. Factory interface for dependency injection and lifecycle management +1. **Shared across domains** — define interfaces at `platform/extension/{ext}/`, implementations at `platform/extension/{ext}/{impl}/`. +2. **Domain-specific** — define at `{domain}/extension/{ext}/`, implementations at `{domain}/extension/{ext}/{impl}/`. +3. Factory interface for dependency injection and lifecycle management (constructed in wiring, not inside `platform/extension` packages). **Extensions hold contracts and implementations only — not factories or routing.** -An `extension/{ext}` package contains the behavioral interface, its `Config`, the `Factory` *interface*, and impl constructors `New(...)` that return the interface. It must **not** contain `Factory` *implementations* (`NewFactory()` constructors or factory structs) or any queue-selection logic. +A `{domain}/extension/{ext}` or `platform/extension/{ext}` package contains the behavioral interface, its `Config`, the `Factory` *interface*, and impl constructors `New(...)` that return the interface. It must **not** contain `Factory` *implementations* (`NewFactory()` constructors or factory structs) or any queue-selection logic. Why: an impl package (e.g. `scorer/heuristic`) can't know the queue topology or the other impls, so a "which impl for which queue" decision doesn't belong there. Per-queue routing — and the small adapters that wrap a `New(...)` impl in the `Factory` interface — live in the wiring layer (e.g. `example/{domain}/{service}/server/main.go`), the one place that knows the full queue set. That's where you route on `Config.QueueName`. -Rule of thumb: if you're about to add a `NewFactory()` or a `map[queue]impl` under `extension/`, it belongs in the wiring layer instead. +Rule of thumb: if you're about to add a `NewFactory()` or a `map[queue]impl` under `{domain}/extension/` or `platform/extension/`, it belongs in the wiring layer instead. **Design interfaces for the technology *space*, not the implementation in front of you.** The interface is a contract every backend will have to satisfy — SQL, key-value (DynamoDB, Bigtable), document, message queue, search, RPC, in-memory, mocks. If the contract assumes a capability that some plausible backend can't provide cheaply, you've baked the current impl's strengths into the API. @@ -142,18 +146,18 @@ When in doubt, ask: *"If the next implementation were DynamoDB / Kafka / Bigtabl ### Import Paths -Paths follow the directory layout: shared code is top-level, domain code nests under the domain folder (`submitqueue/`, `stovepipe/`). +Paths follow the directory layout: shared packages live under `platform/` at the repo root; domain code nests under `submitqueue/`, `stovepipe/`, and other domain folders. - RPC Controllers: `github.com/uber/submitqueue/{domain}/{service}/controller` (e.g. `.../submitqueue/gateway/controller`) - Queue Controllers: `github.com/uber/submitqueue/{domain}/{service}/controller/{step}` - Proto (generated): `github.com/uber/submitqueue/{domain}/{service}/protopb` - 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`) -- Cross-domain consumer framework: `github.com/uber/submitqueue/core/consumer`; domain pipeline topic keys: `github.com/uber/submitqueue/{domain}/core/topickey` +- Cross-domain consumer framework: `github.com/uber/submitqueue/platform/consumer`; domain pipeline topic keys: `github.com/uber/submitqueue/{domain}/core/topickey` - Domain-internal infra: `github.com/uber/submitqueue/{domain}/core/{pkg}` (e.g. `.../submitqueue/core/request`) -- 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`) +- Shared entities: `github.com/uber/submitqueue/platform/base/{pkg}` (e.g. `.../platform/base/messagequeue`) +- Shared extensions: `github.com/uber/submitqueue/platform/extension/{ext}[/{impl}]` (e.g. `.../platform/extension/messagequeue/mysql`) +- Cross-domain infra: `github.com/uber/submitqueue/platform/{pkg}` (e.g. `.../platform/errs`, `.../platform/metrics`, `.../platform/http`) ## Development @@ -225,11 +229,11 @@ make clean # Clean Bazel cache 2. Wire up in `example/{domain}/{service}/server/main.go` **Add new extension:** -1. Create the extension under `{domain}/extension/{ext}/{impl}/` (domain-specific, e.g. `submitqueue/extension/...`) or top-level `extension/{ext}/{impl}/` (shared across domains) with factory and interfaces +1. Create the extension under `{domain}/extension/{ext}/{impl}/` (domain-specific, e.g. `submitqueue/extension/...`) or `platform/extension/{ext}/{impl}/` (shared across domains) with factory and interfaces 2. Add `BUILD.bazel`, tests, and README.md **Add new entity:** -1. Create `{domain}/entity/{entity}.go` (domain-specific) or top-level `entity/{name}/{entity}.go` (shared) with test file and `BUILD.bazel` +1. Create `{domain}/entity/{entity}.go` (domain-specific) or add packages under `platform/base/` (shared) with test file and `BUILD.bazel` **Add gomock for an extension interface:** @@ -252,7 +256,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/messagequeue/mysql/mock_stores.go`): +For inline mocks (mock in the same package, e.g., `platform/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`. @@ -305,9 +309,9 @@ CI runs on every PR and enforces all checks via a `required-checks` gate. **Befo 3. **Value types over pointers** — prefer value types for structs, configs, and return values. Use `(T, bool)` to signal absence instead of `*T`. Pointers only when mutation or shared ownership is needed. 4. **Errors for failures, not control flow** — reserve `error` returns for unexpected or infrastructure failures. Use result types (structs, bools) for expected outcomes like `(Result, error)` or `(T, bool)`. Avoid sentinel errors that represent non-failure states. -### Error Classification (`core/errs`) +### Error Classification (`platform/errs`) -Errors are classified by origin (user vs infra) and retryability. The framework lives in `core/errs/`. See [core/errs/README.md](core/errs/README.md) for full details. +Errors are classified by origin (user vs infra) and retryability. The framework lives in `platform/errs/`. See [platform/errs/README.md](platform/errs/README.md) for full details. **Key rules:** 1. **Non-retryable by default** — a plain `fmt.Errorf(...)` is non-retryable. Wrap with `errs.NewRetryableError(...)` to opt in to retry. diff --git a/MODULE.bazel b/MODULE.bazel index af8557eb..d8c657fa 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -20,24 +20,18 @@ GO_VERSION = "1.24.5" go_sdk = use_extension("@rules_go//go:extensions.bzl", "go_sdk") -# Download an SDK for the host OS & architecture as well as common remote execution -# platforms, using the version given from the `go.mod` file. +# Download a hermetic Go SDK for the host OS/arch and common remote execution +# platforms using the version pinned in `go.mod`. No host Go install is required. go_sdk.from_file(go_mod = "//:go.mod") -# Download an SDK for the host OS & architecture as well as common remote execution -# platforms, with a specific version. -go_sdk.download(version = GO_VERSION) - -# Alternatively, download an SDK for a fixed OS/architecture. +# Also download a linux/amd64 SDK so the Docker images can be cross-compiled +# (see the `build-*-linux` Make targets) from any host. go_sdk.download( goarch = "amd64", goos = "linux", version = GO_VERSION, ) -# Another alternative is to register the Go SDK installed on the host (see the nota bene below). -go_sdk.host() - go_deps = use_extension("@gazelle//:extensions.bzl", "go_deps") go_deps.from_file(go_mod = "//:go.mod") go_deps.module( diff --git a/Makefile b/Makefile index a8467fda..28dbf272 100644 --- a/Makefile +++ b/Makefile @@ -196,12 +196,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 extension/counter/mysql/schema/*.sql; do \ + @for file in platform/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/messagequeue/mysql/schema/*.sql; do \ + @for file in platform/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 @@ -209,7 +209,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/messagequeue/mysql/schema/*.sql; do \ + @for file in platform/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 @@ -336,7 +336,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/changeprovider/... ./extension/counter/... ./extension/messagequeue/... ./submitqueue/extension/queueconfig/... ./submitqueue/extension/mergechecker/... ./submitqueue/extension/pusher/... ./submitqueue/extension/scorer/... ./submitqueue/extension/conflict/... ./core/consumer/... + @$(BAZEL) run @rules_go//go -- generate ./submitqueue/extension/storage/... ./submitqueue/extension/buildrunner/... ./submitqueue/extension/changeprovider/... ./platform/extension/counter/... ./platform/extension/messagequeue/... ./submitqueue/extension/queueconfig/... ./submitqueue/extension/mergechecker/... ./submitqueue/extension/pusher/... ./submitqueue/extension/scorer/... ./submitqueue/extension/conflict/... ./platform/consumer/... @echo "Mocks generated successfully!" proto: ## Generate protobuf files from .proto definitions @@ -375,7 +375,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/messagequeue/mysql/ctl -- $(ARGS) + @$(BAZEL) run //platform/extension/messagequeue/mysql/ctl -- $(ARGS) test: ## Run unit tests @echo "Running unit tests..." diff --git a/README.md b/README.md index 7dd4cd70..20c45816 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,10 @@ SubmitQueue is a high-performance speculative merge queue that keeps your trunk Designed for large monorepos and fast-moving teams where concurrent changes can introduce subtle conflicts and destabilize builds. +## Repository layout + +Cross-domain Go code (errors, metrics, consumer framework, HTTP helpers, shared entities, shared extension contracts) lives under [`platform/`](platform/README.md). Each product domain has its own tree (`submitqueue/`, `stovepipe/`, …) with `gateway/`, `orchestrator/`, `entity/`, `extension/`, and domain-local `core/`. See [CLAUDE.md](CLAUDE.md) for conventions and import paths. + ## Quick Start Requires Docker and Docker Compose. See [Development Setup](doc/howto/DEVELOPMENT.md) for full prerequisites. diff --git a/core/README.md b/core/README.md deleted file mode 100644 index ddc2a377..00000000 --- a/core/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# Core - -Cross-domain infrastructure packages reused across services and domains (SubmitQueue, Stovepipe, and other repo-local services). These are foundational building blocks — not domain entities, not pluggable extensions — and they carry **no domain dependencies**. - -For infrastructure shared only *within* a single domain (across that domain's own gateway and orchestrator), see the domain-scoped `core/` package, e.g. `submitqueue/core/` (which holds the queue `consumer` framework and the `request` lifecycle). - -## Packages - -- **errs/** — Error classification framework. Classifies errors by origin (user vs. infra) and retryability. Extensions return plain errors; service controllers classify them. -- **httpclient/** — Shared HTTP transport helpers (timeouts, instrumentation) for extensions that talk to external services over HTTP. -- **metrics/** — Metrics utility helpers for `tally.Scope`. Provides standardized counters, timers, and histograms with error-aware tagging via `core/errs` integration. diff --git a/core/httpclient/transport.go b/core/httpclient/transport.go deleted file mode 100644 index a485142e..00000000 --- a/core/httpclient/transport.go +++ /dev/null @@ -1,52 +0,0 @@ -package httpclient - -import ( - "net/http" - "net/url" - "strings" -) - -// BaseURLTransport is an http.RoundTripper that rewrites every request URL -// to resolve against a fixed base URL. This allows callers to make requests -// with relative paths (e.g. "/graphql") and have the transport prepend the -// configured base URL transparently. -type BaseURLTransport struct { - // BaseURL is the API base URL (e.g. "https://api.github.com"). - BaseURL *url.URL - // Next is the underlying RoundTripper. Defaults to http.DefaultTransport if nil. - Next http.RoundTripper -} - -// RoundTrip rewrites req.URL to resolve against BaseURL, then delegates to Next. -// The base URL path and request path are joined explicitly so that base URLs -// with a path component (e.g. "https://ghe.example.com/api") are handled -// correctly regardless of whether the request path starts with "/". -func (t *BaseURLTransport) RoundTrip(req *http.Request) (*http.Response, error) { - newReq := req.Clone(req.Context()) - - merged := *t.BaseURL - merged.Path = strings.TrimRight(t.BaseURL.Path, "/") + "/" + strings.TrimLeft(req.URL.Path, "/") - merged.RawQuery = req.URL.RawQuery - newReq.URL = &merged - - next := t.Next - if next == nil { - next = http.DefaultTransport - } - return next.RoundTrip(newReq) -} - -// NewClient builds an *http.Client with BaseURLTransport configured. -// Callers are responsible for layering additional transports (e.g. auth) and -// setting Timeout on the returned client. -func NewClient(rawBaseURL string) (*http.Client, error) { - u, err := url.Parse(rawBaseURL) - if err != nil { - return nil, err - } - - return &http.Client{Transport: &BaseURLTransport{ - BaseURL: u, - Next: http.DefaultTransport, - }}, nil -} diff --git a/doc/howto/TESTING.md b/doc/howto/TESTING.md index cddd2432..79367837 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`, `extension/counter/mysql/schema` +- **Schema**: `submitqueue/extension/storage/mysql/schema`, `platform/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/messagequeue/mysql/schema` +- **Schema**: `platform/extension/messagequeue/mysql/schema` - **Used by**: Gateway (publishes), Orchestrator (consumes) - **Connection**: `QUEUE_MYSQL_DSN` diff --git a/doc/rfc/sql-queue-rfc.md b/doc/rfc/sql-queue-rfc.md index 63c0dce5..5739aa19 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/messagequeue/mysql/schema/queue_messages.sql` for full schema. +See `platform/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/messagequeue/mysql/schema/queue_delivery_state.sql` for full schema. +See `platform/extension/messagequeue/mysql/schema/queue_delivery_state.sql` for full schema. ### Partition Leases Table @@ -197,7 +197,7 @@ See `extension/messagequeue/mysql/schema/queue_delivery_state.sql` for full sche - `(leased_by)`: Find all partitions owned by a worker - `(lease_renewed_at)`: Detect stale leases across workers -See `extension/messagequeue/mysql/schema/queue_partition_leases.sql` for full schema. +See `platform/extension/messagequeue/mysql/schema/queue_partition_leases.sql` for full schema. ### Consumer Offsets Table @@ -210,7 +210,7 @@ See `extension/messagequeue/mysql/schema/queue_partition_leases.sql` for full sc - `(consumer_group)`: Monitor all offsets for a consumer group - `(topic)`: Find all consumers for a topic -See `extension/messagequeue/mysql/schema/queue_offsets.sql` for full schema. +See `platform/extension/messagequeue/mysql/schema/queue_offsets.sql` for full schema. ### Subscriber Heartbeats Table @@ -219,7 +219,7 @@ See `extension/messagequeue/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/messagequeue/mysql/schema/queue_subscriber_heartbeats.sql` for full schema. +See `platform/extension/messagequeue/mysql/schema/queue_subscriber_heartbeats.sql` for full schema. ### Dead Letter Queue diff --git a/doc/rfc/submitqueue/build-runner.md b/doc/rfc/submitqueue/build-runner.md index 1bfba5df..d33b29bf 100644 --- a/doc/rfc/submitqueue/build-runner.md +++ b/doc/rfc/submitqueue/build-runner.md @@ -42,7 +42,7 @@ The build stage needs a vendor-agnostic abstraction for talking to a Build Runne - **`Status`** — fetch the current `BuildStatus` and runner-defined metadata for a build; MAY round-trip to the runner. - **`Cancel`** — request cancellation; returns once the request reaches the runner, not once the build stops. -See `extension/buildrunner/build_runner.go` for the exact Go signatures. The sections below record why the contract is shaped this way. +See `submitqueue/extension/buildrunner/build_runner.go` for the exact Go signatures. The sections below record why the contract is shaped this way. ### Trigger: base + head diff --git a/entity/BUILD.bazel b/entity/BUILD.bazel deleted file mode 100644 index 9f06cd03..00000000 --- a/entity/BUILD.bazel +++ /dev/null @@ -1,8 +0,0 @@ -load("@rules_go//go:def.bzl", "go_library") - -go_library( - name = "entity", - srcs = ["entity.go"], - importpath = "github.com/uber/submitqueue/entity", - visibility = ["//visibility:public"], -) diff --git a/example/submitqueue/gateway/server/BUILD.bazel b/example/submitqueue/gateway/server/BUILD.bazel index 3661cada..111e42b2 100644 --- a/example/submitqueue/gateway/server/BUILD.bazel +++ b/example/submitqueue/gateway/server/BUILD.bazel @@ -11,13 +11,13 @@ go_library( importpath = "github.com/uber/submitqueue/example/submitqueue/gateway/server", visibility = ["//visibility:private"], deps = [ - "//core/consumer", - "//core/errs", - "//core/errs/generic", - "//core/errs/mysql", - "//extension/counter/mysql", - "//extension/messagequeue", - "//extension/messagequeue/mysql", + "//platform/consumer", + "//platform/errs", + "//platform/errs/generic", + "//platform/errs/mysql", + "//platform/extension/counter/mysql", + "//platform/extension/messagequeue", + "//platform/extension/messagequeue/mysql", "//submitqueue/core/topickey", "//submitqueue/extension/queueconfig/yaml", "//submitqueue/extension/storage/mysql", diff --git a/example/submitqueue/gateway/server/main.go b/example/submitqueue/gateway/server/main.go index 0bca7b33..60033a6e 100644 --- a/example/submitqueue/gateway/server/main.go +++ b/example/submitqueue/gateway/server/main.go @@ -28,13 +28,13 @@ import ( _ "github.com/go-sql-driver/mysql" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/consumer" - "github.com/uber/submitqueue/core/errs" - genericerrs "github.com/uber/submitqueue/core/errs/generic" - mysqlerrs "github.com/uber/submitqueue/core/errs/mysql" - 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/platform/consumer" + "github.com/uber/submitqueue/platform/errs" + genericerrs "github.com/uber/submitqueue/platform/errs/generic" + mysqlerrs "github.com/uber/submitqueue/platform/errs/mysql" + mysqlcounter "github.com/uber/submitqueue/platform/extension/counter/mysql" + extqueue "github.com/uber/submitqueue/platform/extension/messagequeue" + queueMySQL "github.com/uber/submitqueue/platform/extension/messagequeue/mysql" "github.com/uber/submitqueue/submitqueue/core/topickey" yamlqueueconfig "github.com/uber/submitqueue/submitqueue/extension/queueconfig/yaml" mysqlstorage "github.com/uber/submitqueue/submitqueue/extension/storage/mysql" @@ -271,7 +271,7 @@ func run() error { // to the log topic and this consumer writes them to storage. logConsumer := consumer.New(logger.Sugar(), scope.SubScope("consumer"), registry, errs.NewClassifierProcessor( - // Storage (extension/storage/mysql) and queue (extension/messagequeue/mysql) + // Storage (submitqueue/extension/storage/mysql) and queue (platform/extension/messagequeue/mysql) // both run on the same MySQL driver, so a single classifier covers // errors surfaced from either backend. genericerrs.Classifier, diff --git a/example/submitqueue/orchestrator/server/BUILD.bazel b/example/submitqueue/orchestrator/server/BUILD.bazel index a1b07cc4..98a981ff 100644 --- a/example/submitqueue/orchestrator/server/BUILD.bazel +++ b/example/submitqueue/orchestrator/server/BUILD.bazel @@ -11,15 +11,15 @@ go_library( importpath = "github.com/uber/submitqueue/example/submitqueue/orchestrator/server", visibility = ["//visibility:private"], deps = [ - "//core/consumer", - "//core/errs", - "//core/errs/generic", - "//core/errs/mysql", - "//core/httpclient", - "//extension/counter", - "//extension/counter/mysql", - "//extension/messagequeue", - "//extension/messagequeue/mysql", + "//platform/consumer", + "//platform/errs", + "//platform/errs/generic", + "//platform/errs/mysql", + "//platform/extension/counter", + "//platform/extension/counter/mysql", + "//platform/extension/messagequeue", + "//platform/extension/messagequeue/mysql", + "//platform/http", "//submitqueue/core/changeset", "//submitqueue/core/topickey", "//submitqueue/entity", diff --git a/example/submitqueue/orchestrator/server/main.go b/example/submitqueue/orchestrator/server/main.go index 5f15d7b5..70d5859a 100644 --- a/example/submitqueue/orchestrator/server/main.go +++ b/example/submitqueue/orchestrator/server/main.go @@ -30,15 +30,15 @@ import ( "golang.org/x/oauth2" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/consumer" - "github.com/uber/submitqueue/core/errs" - genericerrs "github.com/uber/submitqueue/core/errs/generic" - mysqlerrs "github.com/uber/submitqueue/core/errs/mysql" - "github.com/uber/submitqueue/core/httpclient" - "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/platform/consumer" + "github.com/uber/submitqueue/platform/errs" + genericerrs "github.com/uber/submitqueue/platform/errs/generic" + mysqlerrs "github.com/uber/submitqueue/platform/errs/mysql" + "github.com/uber/submitqueue/platform/extension/counter" + mysqlcounter "github.com/uber/submitqueue/platform/extension/counter/mysql" + extqueue "github.com/uber/submitqueue/platform/extension/messagequeue" + queueMySQL "github.com/uber/submitqueue/platform/extension/messagequeue/mysql" + "github.com/uber/submitqueue/platform/http" "github.com/uber/submitqueue/submitqueue/core/changeset" "github.com/uber/submitqueue/submitqueue/core/topickey" "github.com/uber/submitqueue/submitqueue/entity" @@ -218,7 +218,7 @@ func run() error { primaryConsumer := consumer.New(logger.Sugar(), scope.SubScope("consumer"), registry, errs.NewClassifierProcessor( genericerrs.Classifier, - // Storage (extension/storage/mysql) and queue (extension/messagequeue/mysql) + // Storage (submitqueue/extension/storage/mysql) and queue (platform/extension/messagequeue/mysql) // both run on the same MySQL driver, so a single classifier covers // errors surfaced from either backend. mysqlerrs.Classifier, @@ -444,8 +444,8 @@ func newTopicRegistry(q extqueue.Queue, subscriberName string) (consumer.TopicRe // TODO(wiring abstraction): queueExtensions + queueRegistry currently live here // as example-local wiring. Evaluate promoting them into a defined abstraction in -// the submitqueue domain layer (e.g. submitqueue/core/...) — NOT extension/* and -// NOT cross-domain core/, since the bundle names submitqueue-specific extensions. +// the submitqueue domain layer (e.g. submitqueue/core/...) — not `submitqueue/extension/*` +// and not `platform/*`, since the bundle names submitqueue-specific extensions. // Do this only when a trigger lands: (1) a second consumer needs the same wiring // (a real prod server, or an e2e harness building real per-queue profiles); // (2) per-queue config becomes data-driven (build profiles from queueconfig.Store @@ -728,7 +728,7 @@ func newMergeChecker(logger *zap.Logger, scope tally.Scope) (mergechecker.MergeC return mcfake.New(), nil } - client, err := httpclient.NewClient(getEnv("GITHUB_BASE_URL", "https://api.github.com")) + client, err := http.NewClient(getEnv("GITHUB_BASE_URL", "https://api.github.com")) if err != nil { return nil, fmt.Errorf("failed to build GitHub HTTP client: %w", err) } @@ -755,7 +755,7 @@ func newChangeProvider(logger *zap.Logger, scope tally.Scope) (changeprovider.Ch return cpfake.New(), nil } - client, err := httpclient.NewClient(getEnv("GITHUB_BASE_URL", "https://api.github.com")) + client, err := http.NewClient(getEnv("GITHUB_BASE_URL", "https://api.github.com")) if err != nil { return nil, fmt.Errorf("failed to build GitHub HTTP client: %w", err) } diff --git a/platform/README.md b/platform/README.md new file mode 100644 index 00000000..e3d1fade --- /dev/null +++ b/platform/README.md @@ -0,0 +1,14 @@ +# Platform + +Cross-domain packages shared by SubmitQueue, Stovepipe, and other services in this repository. Nothing under `platform/` may depend on domain folders (`submitqueue/`, `stovepipe/`). + +## Packages + +- **errs/** — Error classification (`errs` types, classifiers, MySQL/generic helpers). +- **metrics/** — Tally helpers with error-aware tagging via `platform/errs`. +- **consumer/** — Queue consumer framework (`consumer.Controller`, registry, DLQ wiring). +- **http/** — Small HTTP client helpers (e.g. base-URL `RoundTripper`). Go import path: `github.com/uber/submitqueue/platform/http`; package name is `http`. Callers that also import `net/http` should import this package with an alias (for example `phttp "github.com/uber/submitqueue/platform/http"`) and use `phttp.NewClient`. +- **base/** — Shared domain entities (`change`, `messagequeue`, and related subpackages). Root package `base` is documentation-only. +- **extension/** — Shared extension interfaces and implementations reused across domains (`counter`, `messagequeue`, and backends such as `mysql`). + +Domain-scoped infrastructure and extensions stay under each domain (for example `submitqueue/core/`, `submitqueue/extension/`). diff --git a/platform/base/BUILD.bazel b/platform/base/BUILD.bazel new file mode 100644 index 00000000..2eb69a66 --- /dev/null +++ b/platform/base/BUILD.bazel @@ -0,0 +1,8 @@ +load("@rules_go//go:def.bzl", "go_library") + +go_library( + name = "base", + srcs = ["base.go"], + importpath = "github.com/uber/submitqueue/platform/base", + visibility = ["//visibility:public"], +) diff --git a/entity/entity.go b/platform/base/base.go similarity index 66% rename from entity/entity.go rename to platform/base/base.go index 726654b5..8c86ca57 100644 --- a/entity/entity.go +++ b/platform/base/base.go @@ -12,7 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -// Package entity holds domain entities shared across SubmitQueue, Stovepipe, -// and other repo-local services. Service-specific entities live under each -// service's own entity package (e.g. submitqueue/entity, stovepipe/entity). -package entity +// Package base is the root of shared domain entities used across SubmitQueue, +// Stovepipe, and other repo-local services. Subpackages hold concrete types +// (change identities, queue messages). Service-specific entities live under +// each domain (e.g. submitqueue/entity, stovepipe/entity). +package base diff --git a/entity/change/BUILD.bazel b/platform/base/change/BUILD.bazel similarity index 68% rename from entity/change/BUILD.bazel rename to platform/base/change/BUILD.bazel index c4718877..3a0c66cc 100644 --- a/entity/change/BUILD.bazel +++ b/platform/base/change/BUILD.bazel @@ -3,6 +3,6 @@ load("@rules_go//go:def.bzl", "go_library") go_library( name = "change", srcs = ["change.go"], - importpath = "github.com/uber/submitqueue/entity/change", + importpath = "github.com/uber/submitqueue/platform/base/change", visibility = ["//visibility:public"], ) diff --git a/entity/change/change.go b/platform/base/change/change.go similarity index 100% rename from entity/change/change.go rename to platform/base/change/change.go diff --git a/entity/change/changeutil/BUILD.bazel b/platform/base/change/changeutil/BUILD.bazel similarity index 79% rename from entity/change/changeutil/BUILD.bazel rename to platform/base/change/changeutil/BUILD.bazel index 46c750d5..40653e56 100644 --- a/entity/change/changeutil/BUILD.bazel +++ b/platform/base/change/changeutil/BUILD.bazel @@ -3,7 +3,7 @@ load("@rules_go//go:def.bzl", "go_library", "go_test") go_library( name = "changeutil", srcs = ["hex.go"], - importpath = "github.com/uber/submitqueue/entity/change/changeutil", + importpath = "github.com/uber/submitqueue/platform/base/change/changeutil", visibility = ["//visibility:public"], ) diff --git a/entity/change/changeutil/hex.go b/platform/base/change/changeutil/hex.go similarity index 100% rename from entity/change/changeutil/hex.go rename to platform/base/change/changeutil/hex.go diff --git a/entity/change/changeutil/hex_test.go b/platform/base/change/changeutil/hex_test.go similarity index 100% rename from entity/change/changeutil/hex_test.go rename to platform/base/change/changeutil/hex_test.go diff --git a/entity/change/git/BUILD.bazel b/platform/base/change/git/BUILD.bazel similarity index 74% rename from entity/change/git/BUILD.bazel rename to platform/base/change/git/BUILD.bazel index de6889d9..f2d1650e 100644 --- a/entity/change/git/BUILD.bazel +++ b/platform/base/change/git/BUILD.bazel @@ -3,9 +3,9 @@ load("@rules_go//go:def.bzl", "go_library", "go_test") go_library( name = "git", srcs = ["change_id.go"], - importpath = "github.com/uber/submitqueue/entity/change/git", + importpath = "github.com/uber/submitqueue/platform/base/change/git", visibility = ["//visibility:public"], - deps = ["//entity/change/changeutil"], + deps = ["//platform/base/change/changeutil"], ) go_test( diff --git a/entity/change/git/change_id.go b/platform/base/change/git/change_id.go similarity index 98% rename from entity/change/git/change_id.go rename to platform/base/change/git/change_id.go index aa68e30b..73df17eb 100644 --- a/entity/change/git/change_id.go +++ b/platform/base/change/git/change_id.go @@ -20,7 +20,7 @@ import ( "net/url" "strings" - "github.com/uber/submitqueue/entity/change/changeutil" + "github.com/uber/submitqueue/platform/base/change/changeutil" ) // scheme is the canonical URI scheme for git-backed change identifiers. diff --git a/entity/change/git/change_id_test.go b/platform/base/change/git/change_id_test.go similarity index 100% rename from entity/change/git/change_id_test.go rename to platform/base/change/git/change_id_test.go diff --git a/entity/change/github/BUILD.bazel b/platform/base/change/github/BUILD.bazel similarity index 74% rename from entity/change/github/BUILD.bazel rename to platform/base/change/github/BUILD.bazel index 9311d029..1213fa32 100644 --- a/entity/change/github/BUILD.bazel +++ b/platform/base/change/github/BUILD.bazel @@ -3,9 +3,9 @@ load("@rules_go//go:def.bzl", "go_library", "go_test") go_library( name = "github", srcs = ["change_id.go"], - importpath = "github.com/uber/submitqueue/entity/change/github", + importpath = "github.com/uber/submitqueue/platform/base/change/github", visibility = ["//visibility:public"], - deps = ["//entity/change/changeutil"], + deps = ["//platform/base/change/changeutil"], ) go_test( diff --git a/entity/change/github/change_id.go b/platform/base/change/github/change_id.go similarity index 98% rename from entity/change/github/change_id.go rename to platform/base/change/github/change_id.go index 3bfca416..c0097719 100644 --- a/entity/change/github/change_id.go +++ b/platform/base/change/github/change_id.go @@ -19,7 +19,7 @@ import ( "strconv" "strings" - "github.com/uber/submitqueue/entity/change/changeutil" + "github.com/uber/submitqueue/platform/base/change/changeutil" ) // changeIDFormat is the expected format for change IDs, included in error messages. diff --git a/entity/change/github/change_id_test.go b/platform/base/change/github/change_id_test.go similarity index 100% rename from entity/change/github/change_id_test.go rename to platform/base/change/github/change_id_test.go diff --git a/entity/change/phabricator/BUILD.bazel b/platform/base/change/phabricator/BUILD.bazel similarity index 82% rename from entity/change/phabricator/BUILD.bazel rename to platform/base/change/phabricator/BUILD.bazel index e123d3e6..b1b70174 100644 --- a/entity/change/phabricator/BUILD.bazel +++ b/platform/base/change/phabricator/BUILD.bazel @@ -3,7 +3,7 @@ load("@rules_go//go:def.bzl", "go_library", "go_test") go_library( name = "phabricator", srcs = ["change_id.go"], - importpath = "github.com/uber/submitqueue/entity/change/phabricator", + importpath = "github.com/uber/submitqueue/platform/base/change/phabricator", visibility = ["//visibility:public"], ) diff --git a/entity/change/phabricator/change_id.go b/platform/base/change/phabricator/change_id.go similarity index 100% rename from entity/change/phabricator/change_id.go rename to platform/base/change/phabricator/change_id.go diff --git a/entity/change/phabricator/change_id_test.go b/platform/base/change/phabricator/change_id_test.go similarity index 100% rename from entity/change/phabricator/change_id_test.go rename to platform/base/change/phabricator/change_id_test.go diff --git a/entity/mergestrategy/BUILD.bazel b/platform/base/mergestrategy/BUILD.bazel similarity index 68% rename from entity/mergestrategy/BUILD.bazel rename to platform/base/mergestrategy/BUILD.bazel index d6a289e1..fd324c87 100644 --- a/entity/mergestrategy/BUILD.bazel +++ b/platform/base/mergestrategy/BUILD.bazel @@ -3,6 +3,6 @@ load("@rules_go//go:def.bzl", "go_library") go_library( name = "mergestrategy", srcs = ["mergestrategy.go"], - importpath = "github.com/uber/submitqueue/entity/mergestrategy", + importpath = "github.com/uber/submitqueue/platform/base/mergestrategy", visibility = ["//visibility:public"], ) diff --git a/entity/mergestrategy/mergestrategy.go b/platform/base/mergestrategy/mergestrategy.go similarity index 100% rename from entity/mergestrategy/mergestrategy.go rename to platform/base/mergestrategy/mergestrategy.go diff --git a/entity/messagequeue/BUILD.bazel b/platform/base/messagequeue/BUILD.bazel similarity index 81% rename from entity/messagequeue/BUILD.bazel rename to platform/base/messagequeue/BUILD.bazel index 91f17b91..f468d6ef 100644 --- a/entity/messagequeue/BUILD.bazel +++ b/platform/base/messagequeue/BUILD.bazel @@ -3,7 +3,7 @@ load("@rules_go//go:def.bzl", "go_library", "go_test") go_library( name = "messagequeue", srcs = ["message.go"], - importpath = "github.com/uber/submitqueue/entity/messagequeue", + importpath = "github.com/uber/submitqueue/platform/base/messagequeue", visibility = ["//visibility:public"], ) diff --git a/entity/messagequeue/message.go b/platform/base/messagequeue/message.go similarity index 100% rename from entity/messagequeue/message.go rename to platform/base/messagequeue/message.go diff --git a/entity/messagequeue/message_test.go b/platform/base/messagequeue/message_test.go similarity index 100% rename from entity/messagequeue/message_test.go rename to platform/base/messagequeue/message_test.go diff --git a/core/consumer/BUILD.bazel b/platform/consumer/BUILD.bazel similarity index 64% rename from core/consumer/BUILD.bazel rename to platform/consumer/BUILD.bazel index 185c7b1e..9182b268 100644 --- a/core/consumer/BUILD.bazel +++ b/platform/consumer/BUILD.bazel @@ -7,13 +7,13 @@ go_library( "controller.go", "registry.go", ], - importpath = "github.com/uber/submitqueue/core/consumer", + importpath = "github.com/uber/submitqueue/platform/consumer", visibility = ["//visibility:public"], deps = [ - "//core/errs", - "//core/metrics", - "//entity/messagequeue", - "//extension/messagequeue", + "//platform/base/messagequeue", + "//platform/errs", + "//platform/extension/messagequeue", + "//platform/metrics", "@com_github_uber_go_tally//:tally", "@org_uber_go_zap//:zap", ], @@ -27,11 +27,11 @@ go_test( ], deps = [ ":consumer", - "//core/consumer/mock", - "//core/errs", - "//entity/messagequeue", - "//extension/messagequeue", - "//extension/messagequeue/mock", + "//platform/base/messagequeue", + "//platform/consumer/mock", + "//platform/errs", + "//platform/extension/messagequeue", + "//platform/extension/messagequeue/mock", "//submitqueue/core/topickey", "@com_github_stretchr_testify//assert", "@com_github_stretchr_testify//require", diff --git a/core/consumer/README.md b/platform/consumer/README.md similarity index 95% rename from core/consumer/README.md rename to platform/consumer/README.md index 834082af..68b2603c 100644 --- a/core/consumer/README.md +++ b/platform/consumer/README.md @@ -45,7 +45,7 @@ if err := c.Stop(30000); err != nil { } ``` -The fourth argument is the `errs.ErrorProcessor` the consumer runs over every non-nil controller error before deciding ack/nack/reject. See `core/errs/README.md` for the contract; in short, a primary pipeline consumer takes `errs.NewClassifierProcessor(...)` with the project's standard classifiers, and a DLQ-reconciliation consumer takes `errs.AlwaysRetryableProcessor`. +The fourth argument is the `errs.ErrorProcessor` the consumer runs over every non-nil controller error before deciding ack/nack/reject. See `platform/errs/README.md` for the contract; in short, a primary pipeline consumer takes `errs.NewClassifierProcessor(...)` with the project's standard classifiers, and a DLQ-reconciliation consumer takes `errs.AlwaysRetryableProcessor`. ### Controller diff --git a/core/consumer/consumer.go b/platform/consumer/consumer.go similarity index 99% rename from core/consumer/consumer.go rename to platform/consumer/consumer.go index f1deaf57..93c19ffe 100644 --- a/core/consumer/consumer.go +++ b/platform/consumer/consumer.go @@ -22,9 +22,9 @@ import ( "time" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/errs" - "github.com/uber/submitqueue/core/metrics" - extqueue "github.com/uber/submitqueue/extension/messagequeue" + "github.com/uber/submitqueue/platform/errs" + extqueue "github.com/uber/submitqueue/platform/extension/messagequeue" + "github.com/uber/submitqueue/platform/metrics" "go.uber.org/zap" ) diff --git a/core/consumer/consumer_test.go b/platform/consumer/consumer_test.go similarity index 98% rename from core/consumer/consumer_test.go rename to platform/consumer/consumer_test.go index 566ce99d..12e3a285 100644 --- a/core/consumer/consumer_test.go +++ b/platform/consumer/consumer_test.go @@ -26,12 +26,12 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/consumer" - consumermock "github.com/uber/submitqueue/core/consumer/mock" - "github.com/uber/submitqueue/core/errs" - entityqueue "github.com/uber/submitqueue/entity/messagequeue" - extqueue "github.com/uber/submitqueue/extension/messagequeue" - queuemock "github.com/uber/submitqueue/extension/messagequeue/mock" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" + "github.com/uber/submitqueue/platform/consumer" + consumermock "github.com/uber/submitqueue/platform/consumer/mock" + "github.com/uber/submitqueue/platform/errs" + extqueue "github.com/uber/submitqueue/platform/extension/messagequeue" + queuemock "github.com/uber/submitqueue/platform/extension/messagequeue/mock" "github.com/uber/submitqueue/submitqueue/core/topickey" "go.uber.org/mock/gomock" "go.uber.org/zap/zaptest" diff --git a/core/consumer/controller.go b/platform/consumer/controller.go similarity index 97% rename from core/consumer/controller.go rename to platform/consumer/controller.go index eac16929..13b33e55 100644 --- a/core/consumer/controller.go +++ b/platform/consumer/controller.go @@ -19,8 +19,8 @@ package consumer import ( "context" - entityqueue "github.com/uber/submitqueue/entity/messagequeue" - extqueue "github.com/uber/submitqueue/extension/messagequeue" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" + extqueue "github.com/uber/submitqueue/platform/extension/messagequeue" ) // Delivery is the consumer package's view of a queue delivery. diff --git a/core/consumer/mock/BUILD.bazel b/platform/consumer/mock/BUILD.bazel similarity index 59% rename from core/consumer/mock/BUILD.bazel rename to platform/consumer/mock/BUILD.bazel index 7ce502ae..69afb319 100644 --- a/core/consumer/mock/BUILD.bazel +++ b/platform/consumer/mock/BUILD.bazel @@ -3,11 +3,11 @@ load("@rules_go//go:def.bzl", "go_library") go_library( name = "mock", srcs = ["controller_mock.go"], - importpath = "github.com/uber/submitqueue/core/consumer/mock", + importpath = "github.com/uber/submitqueue/platform/consumer/mock", visibility = ["//visibility:public"], deps = [ - "//core/consumer", - "//entity/messagequeue", + "//platform/base/messagequeue", + "//platform/consumer", "@org_uber_go_mock//gomock", ], ) diff --git a/core/consumer/mock/controller_mock.go b/platform/consumer/mock/controller_mock.go similarity index 97% rename from core/consumer/mock/controller_mock.go rename to platform/consumer/mock/controller_mock.go index 6dab2be4..f7636f23 100644 --- a/core/consumer/mock/controller_mock.go +++ b/platform/consumer/mock/controller_mock.go @@ -8,8 +8,8 @@ import ( context "context" reflect "reflect" - consumer "github.com/uber/submitqueue/core/consumer" - messagequeue "github.com/uber/submitqueue/entity/messagequeue" + messagequeue "github.com/uber/submitqueue/platform/base/messagequeue" + consumer "github.com/uber/submitqueue/platform/consumer" gomock "go.uber.org/mock/gomock" ) diff --git a/core/consumer/registry.go b/platform/consumer/registry.go similarity index 98% rename from core/consumer/registry.go rename to platform/consumer/registry.go index b9247b2a..fd3f8b30 100644 --- a/core/consumer/registry.go +++ b/platform/consumer/registry.go @@ -17,7 +17,7 @@ package consumer import ( "fmt" - extqueue "github.com/uber/submitqueue/extension/messagequeue" + extqueue "github.com/uber/submitqueue/platform/extension/messagequeue" ) // TopicKey identifies a pipeline stage. It is a fixed key used to diff --git a/core/consumer/registry_test.go b/platform/consumer/registry_test.go similarity index 97% rename from core/consumer/registry_test.go rename to platform/consumer/registry_test.go index baf64e0c..66c91054 100644 --- a/core/consumer/registry_test.go +++ b/platform/consumer/registry_test.go @@ -19,9 +19,9 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/uber/submitqueue/core/consumer" - extqueue "github.com/uber/submitqueue/extension/messagequeue" - queuemock "github.com/uber/submitqueue/extension/messagequeue/mock" + "github.com/uber/submitqueue/platform/consumer" + extqueue "github.com/uber/submitqueue/platform/extension/messagequeue" + queuemock "github.com/uber/submitqueue/platform/extension/messagequeue/mock" "github.com/uber/submitqueue/submitqueue/core/topickey" "go.uber.org/mock/gomock" ) diff --git a/core/errs/BUILD.bazel b/platform/errs/BUILD.bazel similarity index 87% rename from core/errs/BUILD.bazel rename to platform/errs/BUILD.bazel index 82f152d7..02516ae2 100644 --- a/core/errs/BUILD.bazel +++ b/platform/errs/BUILD.bazel @@ -6,7 +6,7 @@ go_library( "errs.go", "processor.go", ], - importpath = "github.com/uber/submitqueue/core/errs", + importpath = "github.com/uber/submitqueue/platform/errs", visibility = ["//visibility:public"], ) diff --git a/core/errs/README.md b/platform/errs/README.md similarity index 94% rename from core/errs/README.md rename to platform/errs/README.md index 8a1c5407..7b09a1ff 100644 --- a/core/errs/README.md +++ b/platform/errs/README.md @@ -1,4 +1,4 @@ -# Error Processing (`core/errs`) +# Error Processing (`platform/errs`) The `errs` package provides a framework for classifying errors by origin and retryability. It wraps Go's standard `errors` package — all framework types support `errors.Is`/`errors.As` and participate in the standard error chain. @@ -58,7 +58,7 @@ Two implementations ship in this package: ## Adding a Backend-Specific Classifier -Backend classifiers live alongside the extension they classify, under `core/errs//`. The canonical examples are `core/errs/mysql` (MySQL driver errors) and `core/errs/generic` (transport-agnostic concerns such as `context.Canceled`). +Backend classifiers live alongside the extension they classify, under `platform/errs//`. The canonical examples are `platform/errs/mysql` (MySQL driver errors) and `platform/errs/generic` (transport-agnostic concerns such as `context.Canceled`). A classifier: @@ -67,10 +67,10 @@ A classifier: - Is stateless. The convention is to expose a package-level singleton value rather than a constructor: ```go -// core/errs/foo/foo.go +// platform/errs/foo/foo.go package foo -import "github.com/uber/submitqueue/core/errs" +import "github.com/uber/submitqueue/platform/errs" var Classifier errs.Classifier = classifier{} @@ -89,9 +89,9 @@ Servers wire each classifier into the consumer's `ErrorProcessor`. Order matters ```go import ( - "github.com/uber/submitqueue/core/errs" - genericerrs "github.com/uber/submitqueue/core/errs/generic" - mysqlerrs "github.com/uber/submitqueue/core/errs/mysql" + "github.com/uber/submitqueue/platform/errs" + genericerrs "github.com/uber/submitqueue/platform/errs/generic" + mysqlerrs "github.com/uber/submitqueue/platform/errs/mysql" ) c := consumer.New(logger, scope, registry, @@ -102,7 +102,7 @@ c := consumer.New(logger, scope, registry, ) ``` -Tests follow the same shape: assert per-node behaviour against `Classifier.Classify(node)` directly, and assert end-to-end behaviour by running `errs.NewClassifierProcessor(Classifier).Process(err)` and checking the helpers (`IsRetryable`, `IsUserError`, …) on the result. See `core/errs/mysql/mysql_test.go` and `core/errs/generic/generic_test.go`. +Tests follow the same shape: assert per-node behaviour against `Classifier.Classify(node)` directly, and assert end-to-end behaviour by running `errs.NewClassifierProcessor(Classifier).Process(err)` and checking the helpers (`IsRetryable`, `IsUserError`, …) on the result. See `platform/errs/mysql/mysql_test.go` and `platform/errs/generic/generic_test.go`. ## Overriding Classification from a Controller diff --git a/core/errs/errs.go b/platform/errs/errs.go similarity index 100% rename from core/errs/errs.go rename to platform/errs/errs.go diff --git a/core/errs/errs_test.go b/platform/errs/errs_test.go similarity index 100% rename from core/errs/errs_test.go rename to platform/errs/errs_test.go diff --git a/core/errs/generic/BUILD.bazel b/platform/errs/generic/BUILD.bazel similarity index 71% rename from core/errs/generic/BUILD.bazel rename to platform/errs/generic/BUILD.bazel index 10561c9b..c16ac093 100644 --- a/core/errs/generic/BUILD.bazel +++ b/platform/errs/generic/BUILD.bazel @@ -3,9 +3,9 @@ load("@rules_go//go:def.bzl", "go_library", "go_test") go_library( name = "generic", srcs = ["generic.go"], - importpath = "github.com/uber/submitqueue/core/errs/generic", + importpath = "github.com/uber/submitqueue/platform/errs/generic", visibility = ["//visibility:public"], - deps = ["//core/errs"], + deps = ["//platform/errs"], ) go_test( @@ -13,7 +13,7 @@ go_test( srcs = ["generic_test.go"], embed = [":generic"], deps = [ - "//core/errs", + "//platform/errs", "@com_github_stretchr_testify//assert", ], ) diff --git a/core/errs/generic/generic.go b/platform/errs/generic/generic.go similarity index 95% rename from core/errs/generic/generic.go rename to platform/errs/generic/generic.go index bfc27aaf..86ef9bb2 100644 --- a/core/errs/generic/generic.go +++ b/platform/errs/generic/generic.go @@ -14,13 +14,13 @@ // Package generic provides an errs.Classifier for errors that are not tied to // any particular backend. Servers should wire this classifier in alongside -// any backend-specific classifiers (e.g. core/errs/mysql). +// any backend-specific classifiers (e.g. platform/errs/mysql). package generic import ( "context" - "github.com/uber/submitqueue/core/errs" + "github.com/uber/submitqueue/platform/errs" ) // Classifier recognises generic, non-backend-specific errors and returns diff --git a/core/errs/generic/generic_test.go b/platform/errs/generic/generic_test.go similarity index 98% rename from core/errs/generic/generic_test.go rename to platform/errs/generic/generic_test.go index 0aa0150c..8656894f 100644 --- a/core/errs/generic/generic_test.go +++ b/platform/errs/generic/generic_test.go @@ -21,7 +21,7 @@ import ( "testing" "github.com/stretchr/testify/assert" - "github.com/uber/submitqueue/core/errs" + "github.com/uber/submitqueue/platform/errs" ) func TestClassifier_ContextCanceled(t *testing.T) { diff --git a/core/errs/mysql/BUILD.bazel b/platform/errs/mysql/BUILD.bazel similarity index 78% rename from core/errs/mysql/BUILD.bazel rename to platform/errs/mysql/BUILD.bazel index 332ad6d4..284ac889 100644 --- a/core/errs/mysql/BUILD.bazel +++ b/platform/errs/mysql/BUILD.bazel @@ -3,10 +3,10 @@ load("@rules_go//go:def.bzl", "go_library", "go_test") go_library( name = "mysql", srcs = ["mysql.go"], - importpath = "github.com/uber/submitqueue/core/errs/mysql", + importpath = "github.com/uber/submitqueue/platform/errs/mysql", visibility = ["//visibility:public"], deps = [ - "//core/errs", + "//platform/errs", "@com_github_go_sql_driver_mysql//:mysql", ], ) @@ -16,7 +16,7 @@ go_test( srcs = ["mysql_test.go"], embed = [":mysql"], deps = [ - "//core/errs", + "//platform/errs", "@com_github_go_sql_driver_mysql//:mysql", "@com_github_stretchr_testify//assert", ], diff --git a/core/errs/mysql/mysql.go b/platform/errs/mysql/mysql.go similarity index 99% rename from core/errs/mysql/mysql.go rename to platform/errs/mysql/mysql.go index e5caf200..373fd4d5 100644 --- a/core/errs/mysql/mysql.go +++ b/platform/errs/mysql/mysql.go @@ -28,7 +28,7 @@ import ( "net" gomysql "github.com/go-sql-driver/mysql" - "github.com/uber/submitqueue/core/errs" + "github.com/uber/submitqueue/platform/errs" ) // Classifier implements errs.Classifier for MySQL-related errors. It recognises: diff --git a/core/errs/mysql/mysql_test.go b/platform/errs/mysql/mysql_test.go similarity index 99% rename from core/errs/mysql/mysql_test.go rename to platform/errs/mysql/mysql_test.go index 675f93b9..c6482872 100644 --- a/core/errs/mysql/mysql_test.go +++ b/platform/errs/mysql/mysql_test.go @@ -24,7 +24,7 @@ import ( gomysql "github.com/go-sql-driver/mysql" "github.com/stretchr/testify/assert" - "github.com/uber/submitqueue/core/errs" + "github.com/uber/submitqueue/platform/errs" ) func TestClassifier_MySQLErrorNumbers(t *testing.T) { diff --git a/core/errs/processor.go b/platform/errs/processor.go similarity index 100% rename from core/errs/processor.go rename to platform/errs/processor.go diff --git a/core/errs/processor_test.go b/platform/errs/processor_test.go similarity index 100% rename from core/errs/processor_test.go rename to platform/errs/processor_test.go diff --git a/extension/BUILD.bazel b/platform/extension/BUILD.bazel similarity index 69% rename from extension/BUILD.bazel rename to platform/extension/BUILD.bazel index afdeafa2..de37f075 100644 --- a/extension/BUILD.bazel +++ b/platform/extension/BUILD.bazel @@ -3,6 +3,6 @@ load("@rules_go//go:def.bzl", "go_library") go_library( name = "extension", srcs = ["extension.go"], - importpath = "github.com/uber/submitqueue/extension", + importpath = "github.com/uber/submitqueue/platform/extension", visibility = ["//visibility:public"], ) diff --git a/extension/counter/BUILD.bazel b/platform/extension/counter/BUILD.bazel similarity index 66% rename from extension/counter/BUILD.bazel rename to platform/extension/counter/BUILD.bazel index ee7a5b31..f409f5ae 100644 --- a/extension/counter/BUILD.bazel +++ b/platform/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/extension/counter", + importpath = "github.com/uber/submitqueue/platform/extension/counter", visibility = ["//visibility:public"], ) diff --git a/extension/counter/README.md b/platform/extension/counter/README.md similarity index 85% rename from extension/counter/README.md rename to platform/extension/counter/README.md index 93a59fc7..29240b5d 100644 --- a/extension/counter/README.md +++ b/platform/extension/counter/README.md @@ -30,6 +30,6 @@ val, err = cnt.Next(ctx, "request/other") // returns 1 ## Implementing a Backend -1. Create `extension/counter/{backend}/` directory +1. Create `platform/extension/counter/{backend}/` directory 2. Implement the `Counter` interface -3. Add a schema file under `extension/counter/{backend}/schema/` if the backend requires it +3. Add a schema file under `platform/extension/counter/{backend}/schema/` if the backend requires it diff --git a/extension/counter/counter.go b/platform/extension/counter/counter.go similarity index 100% rename from extension/counter/counter.go rename to platform/extension/counter/counter.go diff --git a/extension/counter/mock/BUILD.bazel b/platform/extension/counter/mock/BUILD.bazel similarity index 70% rename from extension/counter/mock/BUILD.bazel rename to platform/extension/counter/mock/BUILD.bazel index 7d300325..fee13a0d 100644 --- a/extension/counter/mock/BUILD.bazel +++ b/platform/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/extension/counter/mock", + importpath = "github.com/uber/submitqueue/platform/extension/counter/mock", visibility = ["//visibility:public"], deps = ["@org_uber_go_mock//gomock"], ) diff --git a/extension/counter/mock/counter_mock.go b/platform/extension/counter/mock/counter_mock.go similarity index 100% rename from extension/counter/mock/counter_mock.go rename to platform/extension/counter/mock/counter_mock.go diff --git a/extension/counter/mysql/BUILD.bazel b/platform/extension/counter/mysql/BUILD.bazel similarity index 58% rename from extension/counter/mysql/BUILD.bazel rename to platform/extension/counter/mysql/BUILD.bazel index fd70687b..4355c059 100644 --- a/extension/counter/mysql/BUILD.bazel +++ b/platform/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/extension/counter/mysql", + importpath = "github.com/uber/submitqueue/platform/extension/counter/mysql", visibility = ["//visibility:public"], deps = [ - "//core/metrics", - "//extension/counter", + "//platform/extension/counter", + "//platform/metrics", "@com_github_uber_go_tally//:tally", ], ) diff --git a/extension/counter/mysql/counter.go b/platform/extension/counter/mysql/counter.go similarity index 94% rename from extension/counter/mysql/counter.go rename to platform/extension/counter/mysql/counter.go index f6464f10..ab839ce3 100644 --- a/extension/counter/mysql/counter.go +++ b/platform/extension/counter/mysql/counter.go @@ -20,8 +20,8 @@ import ( "fmt" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/metrics" - "github.com/uber/submitqueue/extension/counter" + "github.com/uber/submitqueue/platform/extension/counter" + "github.com/uber/submitqueue/platform/metrics" ) type mysqlCounter struct { diff --git a/extension/counter/mysql/schema/BUILD.bazel b/platform/extension/counter/mysql/schema/BUILD.bazel similarity index 100% rename from extension/counter/mysql/schema/BUILD.bazel rename to platform/extension/counter/mysql/schema/BUILD.bazel diff --git a/extension/counter/mysql/schema/counter.sql b/platform/extension/counter/mysql/schema/counter.sql similarity index 100% rename from extension/counter/mysql/schema/counter.sql rename to platform/extension/counter/mysql/schema/counter.sql diff --git a/extension/extension.go b/platform/extension/extension.go similarity index 81% rename from extension/extension.go rename to platform/extension/extension.go index 8b7d5ce3..df45c2ce 100644 --- a/extension/extension.go +++ b/platform/extension/extension.go @@ -13,7 +13,7 @@ // limitations under the License. // Package extension holds extension interfaces and implementations shared -// across SubmitQueue, Stovepipe, and other repo-local services. Service-specific -// extensions live under each service's own extension package (e.g. -// submitqueue/extension, stovepipe/extension). +// across SubmitQueue, Stovepipe, and other repo-local services. Import path: +// `github.com/uber/submitqueue/platform/extension`. Service-specific extensions +// live under each domain (e.g. `submitqueue/extension`, `stovepipe/extension`). package extension diff --git a/extension/messagequeue/BUILD.bazel b/platform/extension/messagequeue/BUILD.bazel similarity index 80% rename from extension/messagequeue/BUILD.bazel rename to platform/extension/messagequeue/BUILD.bazel index 6fab5bf9..96a51581 100644 --- a/extension/messagequeue/BUILD.bazel +++ b/platform/extension/messagequeue/BUILD.bazel @@ -9,9 +9,9 @@ go_library( "subscriber.go", "subscription_config.go", ], - importpath = "github.com/uber/submitqueue/extension/messagequeue", + importpath = "github.com/uber/submitqueue/platform/extension/messagequeue", visibility = ["//visibility:public"], - deps = ["//entity/messagequeue"], + deps = ["//platform/base/messagequeue"], ) go_test( diff --git a/extension/messagequeue/README.md b/platform/extension/messagequeue/README.md similarity index 80% rename from extension/messagequeue/README.md rename to platform/extension/messagequeue/README.md index 84b423f6..1f39ec56 100644 --- a/extension/messagequeue/README.md +++ b/platform/extension/messagequeue/README.md @@ -12,12 +12,14 @@ Publishes messages to topics. ```go type Publisher interface { - Publish(ctx context.Context, topic string, message queue.Message) error - PublishAfter(ctx context.Context, topic string, message queue.Message, delayMs int64) error + Publish(ctx context.Context, topic string, message entityqueue.Message) error + PublishAfter(ctx context.Context, topic string, message entityqueue.Message, delayMs int64) error Close() error } ``` +(`entityqueue` is `github.com/uber/submitqueue/platform/base/messagequeue`.) + **`PublishAfter`** inserts a fresh message that becomes visible to subscribers only after `delayMs`. It is distinct from `Nack(requeueAfterMillis)` even though both can produce "next delivery happens at T+delay": - `Nack` is "this delivery failed, try again" — it bumps `retry_count` and eventually trips DLQ. @@ -40,7 +42,7 @@ Message with acknowledgment operations. ```go type Delivery interface { - Message() queue.Message + Message() entityqueue.Message Ack(ctx context.Context) error Nack(ctx context.Context, requeueAfterMillis int64) error Reject(ctx context.Context, reason string) error @@ -75,12 +77,14 @@ See `subscription_config.go` for all fields and defaults. ## Usage ```go +import entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" + q, _ := NewQueue(config) defer q.Close() // Publish pub := q.Publisher() -msg := queue.NewMessage("id", []byte("payload"), "partition-key", nil) +msg := entityqueue.NewMessage("id", []byte("payload"), "partition-key", nil) pub.Publish(ctx, "topic", msg) // Subscribe @@ -98,8 +102,8 @@ for delivery := range deliveries { ## Implementing a Backend -1. Create `extension/queue/{backend}/` directory +1. Create `platform/extension/messagequeue/{backend}/` directory 2. Implement `Queue`, `Publisher`, `Subscriber`, `Delivery` interfaces -3. Map `queue.Message` to backend format +3. Map `entityqueue.Message` to backend format -See `extension/queue/mysql/` for the reference implementation. +See `platform/extension/messagequeue/mysql/` for the reference implementation. diff --git a/extension/messagequeue/delivery.go b/platform/extension/messagequeue/delivery.go similarity index 97% rename from extension/messagequeue/delivery.go rename to platform/extension/messagequeue/delivery.go index c89cb025..4a180c70 100644 --- a/extension/messagequeue/delivery.go +++ b/platform/extension/messagequeue/delivery.go @@ -19,7 +19,7 @@ package messagequeue import ( "context" - entityqueue "github.com/uber/submitqueue/entity/messagequeue" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" ) // Delivery represents a message delivered by a Subscriber. diff --git a/extension/messagequeue/mock/BUILD.bazel b/platform/extension/messagequeue/mock/BUILD.bazel similarity index 64% rename from extension/messagequeue/mock/BUILD.bazel rename to platform/extension/messagequeue/mock/BUILD.bazel index 717de202..0108d790 100644 --- a/extension/messagequeue/mock/BUILD.bazel +++ b/platform/extension/messagequeue/mock/BUILD.bazel @@ -8,11 +8,11 @@ go_library( "queue_mock.go", "subscriber_mock.go", ], - importpath = "github.com/uber/submitqueue/extension/messagequeue/mock", + importpath = "github.com/uber/submitqueue/platform/extension/messagequeue/mock", visibility = ["//visibility:public"], deps = [ - "//entity/messagequeue", - "//extension/messagequeue", + "//platform/base/messagequeue", + "//platform/extension/messagequeue", "@org_uber_go_mock//gomock", ], ) diff --git a/extension/messagequeue/mock/delivery_mock.go b/platform/extension/messagequeue/mock/delivery_mock.go similarity index 98% rename from extension/messagequeue/mock/delivery_mock.go rename to platform/extension/messagequeue/mock/delivery_mock.go index 8b936ede..7aa8bd24 100644 --- a/extension/messagequeue/mock/delivery_mock.go +++ b/platform/extension/messagequeue/mock/delivery_mock.go @@ -13,7 +13,7 @@ import ( context "context" reflect "reflect" - messagequeue "github.com/uber/submitqueue/entity/messagequeue" + messagequeue "github.com/uber/submitqueue/platform/base/messagequeue" gomock "go.uber.org/mock/gomock" ) diff --git a/extension/messagequeue/mock/publisher_mock.go b/platform/extension/messagequeue/mock/publisher_mock.go similarity index 97% rename from extension/messagequeue/mock/publisher_mock.go rename to platform/extension/messagequeue/mock/publisher_mock.go index 36e97108..c313b7bd 100644 --- a/extension/messagequeue/mock/publisher_mock.go +++ b/platform/extension/messagequeue/mock/publisher_mock.go @@ -13,7 +13,7 @@ import ( context "context" reflect "reflect" - messagequeue "github.com/uber/submitqueue/entity/messagequeue" + messagequeue "github.com/uber/submitqueue/platform/base/messagequeue" gomock "go.uber.org/mock/gomock" ) diff --git a/extension/messagequeue/mock/queue_mock.go b/platform/extension/messagequeue/mock/queue_mock.go similarity index 96% rename from extension/messagequeue/mock/queue_mock.go rename to platform/extension/messagequeue/mock/queue_mock.go index 6ee84c44..762a165d 100644 --- a/extension/messagequeue/mock/queue_mock.go +++ b/platform/extension/messagequeue/mock/queue_mock.go @@ -12,7 +12,7 @@ package mock import ( reflect "reflect" - messagequeue "github.com/uber/submitqueue/extension/messagequeue" + messagequeue "github.com/uber/submitqueue/platform/extension/messagequeue" gomock "go.uber.org/mock/gomock" ) diff --git a/extension/messagequeue/mock/subscriber_mock.go b/platform/extension/messagequeue/mock/subscriber_mock.go similarity index 96% rename from extension/messagequeue/mock/subscriber_mock.go rename to platform/extension/messagequeue/mock/subscriber_mock.go index 8443a868..2e202c02 100644 --- a/extension/messagequeue/mock/subscriber_mock.go +++ b/platform/extension/messagequeue/mock/subscriber_mock.go @@ -13,7 +13,7 @@ import ( context "context" reflect "reflect" - messagequeue "github.com/uber/submitqueue/extension/messagequeue" + messagequeue "github.com/uber/submitqueue/platform/extension/messagequeue" gomock "go.uber.org/mock/gomock" ) diff --git a/extension/messagequeue/mysql/BUILD.bazel b/platform/extension/messagequeue/mysql/BUILD.bazel similarity index 81% rename from extension/messagequeue/mysql/BUILD.bazel rename to platform/extension/messagequeue/mysql/BUILD.bazel index 4e61e75d..abee6619 100644 --- a/extension/messagequeue/mysql/BUILD.bazel +++ b/platform/extension/messagequeue/mysql/BUILD.bazel @@ -16,12 +16,12 @@ go_library( "subscriber.go", "subscriber_heartbeat_store.go", ], - importpath = "github.com/uber/submitqueue/extension/messagequeue/mysql", + importpath = "github.com/uber/submitqueue/platform/extension/messagequeue/mysql", visibility = ["//visibility:public"], deps = [ - "//core/metrics", - "//entity/messagequeue", - "//extension/messagequeue", + "//platform/base/messagequeue", + "//platform/extension/messagequeue", + "//platform/metrics", "@com_github_uber_go_tally//:tally", "@org_uber_go_mock//gomock", "@org_uber_go_zap//:zap", @@ -42,8 +42,8 @@ go_test( ], embed = [":mysql"], deps = [ - "//entity/messagequeue", - "//extension/messagequeue", + "//platform/base/messagequeue", + "//platform/extension/messagequeue", "@com_github_data_dog_go_sqlmock//:go-sqlmock", "@com_github_stretchr_testify//assert", "@com_github_stretchr_testify//require", diff --git a/extension/messagequeue/mysql/README.md b/platform/extension/messagequeue/mysql/README.md similarity index 92% rename from extension/messagequeue/mysql/README.md rename to platform/extension/messagequeue/mysql/README.md index a0cdcd1f..38671b15 100644 --- a/extension/messagequeue/mysql/README.md +++ b/platform/extension/messagequeue/mysql/README.md @@ -10,9 +10,9 @@ For design rationale, guarantees, and trade-offs, see the [RFC](../../../doc/rfc import ( "database/sql" _ "github.com/go-sql-driver/mysql" - queueMySQL "github.com/uber/submitqueue/extension/queue/mysql" - extqueue "github.com/uber/submitqueue/extension/queue" - "github.com/uber/submitqueue/entity/queue" + queueMySQL "github.com/uber/submitqueue/platform/extension/messagequeue/mysql" + extqueue "github.com/uber/submitqueue/platform/extension/messagequeue" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" ) // Setup @@ -25,7 +25,7 @@ q, _ := queueMySQL.NewQueue(queueMySQL.Params{ defer q.Close() // Publish -msg := queue.NewMessage("msg-id", []byte(`{"data": "value"}`), "repo-123", nil) +msg := entityqueue.NewMessage("msg-id", []byte(`{"data": "value"}`), "repo-123", nil) q.Publisher().Publish(ctx, "merge_events", msg) // Subscribe with per-subscription config @@ -45,7 +45,7 @@ for delivery := range deliveryCh { Per-subscription configuration enables different settings for each topic: ```go -import extqueue "github.com/uber/submitqueue/extension/queue" +import extqueue "github.com/uber/submitqueue/platform/extension/messagequeue" subConfig := extqueue.DefaultSubscriptionConfig("worker-1", "consumer-group") @@ -79,7 +79,7 @@ subConfig.DLQ.TopicSuffix = "_dlq" // DLQ topic suffix ## Package Layout ``` -extension/queue/mysql/ +platform/extension/messagequeue/mysql/ ├── sql.go # NewQueue constructor, wires stores → publisher/subscriber ├── stores.go # Internal store interfaces (messageStore, offsetStore, etc.) ├── message_store.go # queue_messages table operations (immutable log) @@ -182,8 +182,8 @@ Stores do not log errors — they return them. The subscriber propagates all err ### Unit Tests ```bash -bazel test //extension/queue/mysql:mysql_test --test_output=streamed -bazel test //extension/queue/mysql/ctl/...:all --test_output=streamed +bazel test //platform/extension/messagequeue/mysql:mysql_test --test_output=streamed +bazel test //platform/extension/messagequeue/mysql/ctl/...:all --test_output=streamed ``` ### Integration Tests @@ -191,7 +191,7 @@ bazel test //extension/queue/mysql/ctl/...:all --test_output=streamed Requires Docker running: ```bash -bazel test //test/integration/extension/queue/... --test_output=streamed +bazel test //test/integration/extension/messagequeue/... --test_output=streamed ``` Integration tests cover: publish/subscribe, partition isolation, ordering, visibility timeout, nack with delay, idempotent publish, concurrent publishers, crash recovery, multiple consumer groups, rebalancing, DLQ, graceful shutdown, non-blocking nack, strict serialization (`BatchSize=1`), and independent consumer group state. diff --git a/extension/messagequeue/mysql/constants.go b/platform/extension/messagequeue/mysql/constants.go similarity index 100% rename from extension/messagequeue/mysql/constants.go rename to platform/extension/messagequeue/mysql/constants.go diff --git a/extension/messagequeue/mysql/ctl/BUILD.bazel b/platform/extension/messagequeue/mysql/ctl/BUILD.bazel similarity index 73% rename from extension/messagequeue/mysql/ctl/BUILD.bazel rename to platform/extension/messagequeue/mysql/ctl/BUILD.bazel index 10a02bda..6747b44c 100644 --- a/extension/messagequeue/mysql/ctl/BUILD.bazel +++ b/platform/extension/messagequeue/mysql/ctl/BUILD.bazel @@ -6,10 +6,10 @@ go_library( "commands.go", "main.go", ], - importpath = "github.com/uber/submitqueue/extension/messagequeue/mysql/ctl", + importpath = "github.com/uber/submitqueue/platform/extension/messagequeue/mysql/ctl", visibility = ["//visibility:private"], deps = [ - "//extension/messagequeue/mysql/ctl/lib", + "//platform/extension/messagequeue/mysql/ctl/lib", "@com_github_go_sql_driver_mysql//:mysql", "@com_github_spf13_cobra//:cobra", ], diff --git a/extension/messagequeue/mysql/ctl/README.md b/platform/extension/messagequeue/mysql/ctl/README.md similarity index 95% rename from extension/messagequeue/mysql/ctl/README.md rename to platform/extension/messagequeue/mysql/ctl/README.md index 1bc76ee1..e6cb64c2 100644 --- a/extension/messagequeue/mysql/ctl/README.md +++ b/platform/extension/messagequeue/mysql/ctl/README.md @@ -31,8 +31,8 @@ make run-queue-admin ARGS="topic-stats --topic merge_queue" Via Bazel directly: ```bash -bazel run //extension/queue/mysql/ctl -- list-topics -bazel run //extension/queue/mysql/ctl -- topic-stats --topic merge_queue +bazel run //platform/extension/messagequeue/mysql/ctl -- list-topics +bazel run //platform/extension/messagequeue/mysql/ctl -- topic-stats --topic merge_queue ``` ## Commands diff --git a/extension/messagequeue/mysql/ctl/commands.go b/platform/extension/messagequeue/mysql/ctl/commands.go similarity index 99% rename from extension/messagequeue/mysql/ctl/commands.go rename to platform/extension/messagequeue/mysql/ctl/commands.go index 7411573a..afb35126 100644 --- a/extension/messagequeue/mysql/ctl/commands.go +++ b/platform/extension/messagequeue/mysql/ctl/commands.go @@ -23,7 +23,7 @@ import ( "strings" "github.com/spf13/cobra" - "github.com/uber/submitqueue/extension/messagequeue/mysql/ctl/lib" + "github.com/uber/submitqueue/platform/extension/messagequeue/mysql/ctl/lib" ) // confirmAction prompts the user for confirmation unless --no-interactive is set. diff --git a/extension/messagequeue/mysql/ctl/lib/BUILD.bazel b/platform/extension/messagequeue/mysql/ctl/lib/BUILD.bazel similarity index 75% rename from extension/messagequeue/mysql/ctl/lib/BUILD.bazel rename to platform/extension/messagequeue/mysql/ctl/lib/BUILD.bazel index 4f7da56d..b492eabd 100644 --- a/extension/messagequeue/mysql/ctl/lib/BUILD.bazel +++ b/platform/extension/messagequeue/mysql/ctl/lib/BUILD.bazel @@ -6,9 +6,9 @@ go_library( "admin.go", "format.go", ], - importpath = "github.com/uber/submitqueue/extension/messagequeue/mysql/ctl/lib", + importpath = "github.com/uber/submitqueue/platform/extension/messagequeue/mysql/ctl/lib", visibility = ["//visibility:public"], - deps = ["//extension/messagequeue/mysql"], + deps = ["//platform/extension/messagequeue/mysql"], ) go_test( diff --git a/extension/messagequeue/mysql/ctl/lib/admin.go b/platform/extension/messagequeue/mysql/ctl/lib/admin.go similarity index 99% rename from extension/messagequeue/mysql/ctl/lib/admin.go rename to platform/extension/messagequeue/mysql/ctl/lib/admin.go index c8e3f26a..8ccdc77a 100644 --- a/extension/messagequeue/mysql/ctl/lib/admin.go +++ b/platform/extension/messagequeue/mysql/ctl/lib/admin.go @@ -21,7 +21,7 @@ import ( "fmt" "time" - mysql "github.com/uber/submitqueue/extension/messagequeue/mysql" + mysql "github.com/uber/submitqueue/platform/extension/messagequeue/mysql" ) // AdminStore provides read-only inspection and targeted admin mutations diff --git a/extension/messagequeue/mysql/ctl/lib/admin_test.go b/platform/extension/messagequeue/mysql/ctl/lib/admin_test.go similarity index 100% rename from extension/messagequeue/mysql/ctl/lib/admin_test.go rename to platform/extension/messagequeue/mysql/ctl/lib/admin_test.go diff --git a/extension/messagequeue/mysql/ctl/lib/format.go b/platform/extension/messagequeue/mysql/ctl/lib/format.go similarity index 100% rename from extension/messagequeue/mysql/ctl/lib/format.go rename to platform/extension/messagequeue/mysql/ctl/lib/format.go diff --git a/extension/messagequeue/mysql/ctl/main.go b/platform/extension/messagequeue/mysql/ctl/main.go similarity index 100% rename from extension/messagequeue/mysql/ctl/main.go rename to platform/extension/messagequeue/mysql/ctl/main.go diff --git a/extension/messagequeue/mysql/delivery_state_store.go b/platform/extension/messagequeue/mysql/delivery_state_store.go similarity index 99% rename from extension/messagequeue/mysql/delivery_state_store.go rename to platform/extension/messagequeue/mysql/delivery_state_store.go index 49e585e4..9981beac 100644 --- a/extension/messagequeue/mysql/delivery_state_store.go +++ b/platform/extension/messagequeue/mysql/delivery_state_store.go @@ -21,7 +21,7 @@ import ( "time" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/metrics" + "github.com/uber/submitqueue/platform/metrics" "go.uber.org/zap" ) diff --git a/extension/messagequeue/mysql/delivery_state_store_test.go b/platform/extension/messagequeue/mysql/delivery_state_store_test.go similarity index 100% rename from extension/messagequeue/mysql/delivery_state_store_test.go rename to platform/extension/messagequeue/mysql/delivery_state_store_test.go diff --git a/extension/messagequeue/mysql/errors.go b/platform/extension/messagequeue/mysql/errors.go similarity index 100% rename from extension/messagequeue/mysql/errors.go rename to platform/extension/messagequeue/mysql/errors.go diff --git a/extension/messagequeue/mysql/message_store.go b/platform/extension/messagequeue/mysql/message_store.go similarity index 99% rename from extension/messagequeue/mysql/message_store.go rename to platform/extension/messagequeue/mysql/message_store.go index 39dfa905..df3ae0c6 100644 --- a/extension/messagequeue/mysql/message_store.go +++ b/platform/extension/messagequeue/mysql/message_store.go @@ -24,8 +24,8 @@ import ( "github.com/uber-go/tally" "go.uber.org/zap" - "github.com/uber/submitqueue/core/metrics" - entityqueue "github.com/uber/submitqueue/entity/messagequeue" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" + "github.com/uber/submitqueue/platform/metrics" ) // sqlmessageStore is the SQL implementation of messageStore diff --git a/extension/messagequeue/mysql/message_store_test.go b/platform/extension/messagequeue/mysql/message_store_test.go similarity index 99% rename from extension/messagequeue/mysql/message_store_test.go rename to platform/extension/messagequeue/mysql/message_store_test.go index 039f9602..7e8188cf 100644 --- a/extension/messagequeue/mysql/message_store_test.go +++ b/platform/extension/messagequeue/mysql/message_store_test.go @@ -27,7 +27,7 @@ import ( "github.com/uber-go/tally" "go.uber.org/zap/zaptest" - entityqueue "github.com/uber/submitqueue/entity/messagequeue" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" ) // testMetrics returns a test metrics scope for use in tests diff --git a/extension/messagequeue/mysql/mock_stores.go b/platform/extension/messagequeue/mysql/mock_stores.go similarity index 99% rename from extension/messagequeue/mysql/mock_stores.go rename to platform/extension/messagequeue/mysql/mock_stores.go index bd0595ad..f5bff7f5 100644 --- a/extension/messagequeue/mysql/mock_stores.go +++ b/platform/extension/messagequeue/mysql/mock_stores.go @@ -13,7 +13,7 @@ import ( context "context" reflect "reflect" - messagequeue "github.com/uber/submitqueue/entity/messagequeue" + messagequeue "github.com/uber/submitqueue/platform/base/messagequeue" gomock "go.uber.org/mock/gomock" ) diff --git a/extension/messagequeue/mysql/offset_store.go b/platform/extension/messagequeue/mysql/offset_store.go similarity index 98% rename from extension/messagequeue/mysql/offset_store.go rename to platform/extension/messagequeue/mysql/offset_store.go index 33681c3f..a71116fe 100644 --- a/extension/messagequeue/mysql/offset_store.go +++ b/platform/extension/messagequeue/mysql/offset_store.go @@ -21,7 +21,7 @@ import ( "time" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/metrics" + "github.com/uber/submitqueue/platform/metrics" ) // sqloffsetStore is the SQL implementation of offsetStore diff --git a/extension/messagequeue/mysql/offset_store_test.go b/platform/extension/messagequeue/mysql/offset_store_test.go similarity index 100% rename from extension/messagequeue/mysql/offset_store_test.go rename to platform/extension/messagequeue/mysql/offset_store_test.go diff --git a/extension/messagequeue/mysql/partition_lease_store.go b/platform/extension/messagequeue/mysql/partition_lease_store.go similarity index 99% rename from extension/messagequeue/mysql/partition_lease_store.go rename to platform/extension/messagequeue/mysql/partition_lease_store.go index 384255bf..23f803b3 100644 --- a/extension/messagequeue/mysql/partition_lease_store.go +++ b/platform/extension/messagequeue/mysql/partition_lease_store.go @@ -22,7 +22,7 @@ import ( "time" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/metrics" + "github.com/uber/submitqueue/platform/metrics" "go.uber.org/zap" ) diff --git a/extension/messagequeue/mysql/partition_lease_store_test.go b/platform/extension/messagequeue/mysql/partition_lease_store_test.go similarity index 100% rename from extension/messagequeue/mysql/partition_lease_store_test.go rename to platform/extension/messagequeue/mysql/partition_lease_store_test.go diff --git a/extension/messagequeue/mysql/publisher.go b/platform/extension/messagequeue/mysql/publisher.go similarity index 96% rename from extension/messagequeue/mysql/publisher.go rename to platform/extension/messagequeue/mysql/publisher.go index cfe8246f..1719a263 100644 --- a/extension/messagequeue/mysql/publisher.go +++ b/platform/extension/messagequeue/mysql/publisher.go @@ -23,8 +23,8 @@ import ( "github.com/uber-go/tally" "go.uber.org/zap" - "github.com/uber/submitqueue/core/metrics" - entityqueue "github.com/uber/submitqueue/entity/messagequeue" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" + "github.com/uber/submitqueue/platform/metrics" ) type publisher struct { diff --git a/extension/messagequeue/mysql/publisher_test.go b/platform/extension/messagequeue/mysql/publisher_test.go similarity index 98% rename from extension/messagequeue/mysql/publisher_test.go rename to platform/extension/messagequeue/mysql/publisher_test.go index b06b0e7d..f54af29d 100644 --- a/extension/messagequeue/mysql/publisher_test.go +++ b/platform/extension/messagequeue/mysql/publisher_test.go @@ -25,8 +25,8 @@ import ( "go.uber.org/mock/gomock" "go.uber.org/zap/zaptest" - entityqueue "github.com/uber/submitqueue/entity/messagequeue" - extqueue "github.com/uber/submitqueue/extension/messagequeue" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" + extqueue "github.com/uber/submitqueue/platform/extension/messagequeue" // mocks in same package ) diff --git a/extension/messagequeue/mysql/schema/BUILD.bazel b/platform/extension/messagequeue/mysql/schema/BUILD.bazel similarity index 100% rename from extension/messagequeue/mysql/schema/BUILD.bazel rename to platform/extension/messagequeue/mysql/schema/BUILD.bazel diff --git a/extension/messagequeue/mysql/schema/queue_delivery_state.sql b/platform/extension/messagequeue/mysql/schema/queue_delivery_state.sql similarity index 100% rename from extension/messagequeue/mysql/schema/queue_delivery_state.sql rename to platform/extension/messagequeue/mysql/schema/queue_delivery_state.sql diff --git a/extension/messagequeue/mysql/schema/queue_messages.sql b/platform/extension/messagequeue/mysql/schema/queue_messages.sql similarity index 100% rename from extension/messagequeue/mysql/schema/queue_messages.sql rename to platform/extension/messagequeue/mysql/schema/queue_messages.sql diff --git a/extension/messagequeue/mysql/schema/queue_offsets.sql b/platform/extension/messagequeue/mysql/schema/queue_offsets.sql similarity index 100% rename from extension/messagequeue/mysql/schema/queue_offsets.sql rename to platform/extension/messagequeue/mysql/schema/queue_offsets.sql diff --git a/extension/messagequeue/mysql/schema/queue_partition_leases.sql b/platform/extension/messagequeue/mysql/schema/queue_partition_leases.sql similarity index 100% rename from extension/messagequeue/mysql/schema/queue_partition_leases.sql rename to platform/extension/messagequeue/mysql/schema/queue_partition_leases.sql diff --git a/extension/messagequeue/mysql/schema/queue_subscriber_heartbeats.sql b/platform/extension/messagequeue/mysql/schema/queue_subscriber_heartbeats.sql similarity index 100% rename from extension/messagequeue/mysql/schema/queue_subscriber_heartbeats.sql rename to platform/extension/messagequeue/mysql/schema/queue_subscriber_heartbeats.sql diff --git a/extension/messagequeue/mysql/sql.go b/platform/extension/messagequeue/mysql/sql.go similarity index 97% rename from extension/messagequeue/mysql/sql.go rename to platform/extension/messagequeue/mysql/sql.go index ebd3402a..042ae9a5 100644 --- a/extension/messagequeue/mysql/sql.go +++ b/platform/extension/messagequeue/mysql/sql.go @@ -23,7 +23,7 @@ import ( "github.com/uber-go/tally" "go.uber.org/zap" - extqueue "github.com/uber/submitqueue/extension/messagequeue" + extqueue "github.com/uber/submitqueue/platform/extension/messagequeue" ) type queueImpl struct { diff --git a/extension/messagequeue/mysql/sql_test.go b/platform/extension/messagequeue/mysql/sql_test.go similarity index 98% rename from extension/messagequeue/mysql/sql_test.go rename to platform/extension/messagequeue/mysql/sql_test.go index 5627d851..f04b0f36 100644 --- a/extension/messagequeue/mysql/sql_test.go +++ b/platform/extension/messagequeue/mysql/sql_test.go @@ -24,7 +24,7 @@ import ( "github.com/uber-go/tally" "go.uber.org/zap/zaptest" - extqueue "github.com/uber/submitqueue/extension/messagequeue" + extqueue "github.com/uber/submitqueue/platform/extension/messagequeue" ) func TestNewQueue(t *testing.T) { diff --git a/extension/messagequeue/mysql/stores.go b/platform/extension/messagequeue/mysql/stores.go similarity index 99% rename from extension/messagequeue/mysql/stores.go rename to platform/extension/messagequeue/mysql/stores.go index 47bdc48a..01a60fb4 100644 --- a/extension/messagequeue/mysql/stores.go +++ b/platform/extension/messagequeue/mysql/stores.go @@ -19,7 +19,7 @@ package mysql import ( "context" - entityqueue "github.com/uber/submitqueue/entity/messagequeue" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" ) const ( diff --git a/extension/messagequeue/mysql/subscriber.go b/platform/extension/messagequeue/mysql/subscriber.go similarity index 99% rename from extension/messagequeue/mysql/subscriber.go rename to platform/extension/messagequeue/mysql/subscriber.go index be866e8a..9cc12f29 100644 --- a/extension/messagequeue/mysql/subscriber.go +++ b/platform/extension/messagequeue/mysql/subscriber.go @@ -25,9 +25,9 @@ import ( "github.com/uber-go/tally" "go.uber.org/zap" - "github.com/uber/submitqueue/core/metrics" - entityqueue "github.com/uber/submitqueue/entity/messagequeue" - extqueue "github.com/uber/submitqueue/extension/messagequeue" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" + extqueue "github.com/uber/submitqueue/platform/extension/messagequeue" + "github.com/uber/submitqueue/platform/metrics" ) const ( diff --git a/extension/messagequeue/mysql/subscriber_heartbeat_store.go b/platform/extension/messagequeue/mysql/subscriber_heartbeat_store.go similarity index 98% rename from extension/messagequeue/mysql/subscriber_heartbeat_store.go rename to platform/extension/messagequeue/mysql/subscriber_heartbeat_store.go index 6d7cc700..b7967f96 100644 --- a/extension/messagequeue/mysql/subscriber_heartbeat_store.go +++ b/platform/extension/messagequeue/mysql/subscriber_heartbeat_store.go @@ -21,7 +21,7 @@ import ( "time" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/metrics" + "github.com/uber/submitqueue/platform/metrics" "go.uber.org/zap" ) diff --git a/extension/messagequeue/mysql/subscriber_heartbeat_store_test.go b/platform/extension/messagequeue/mysql/subscriber_heartbeat_store_test.go similarity index 100% rename from extension/messagequeue/mysql/subscriber_heartbeat_store_test.go rename to platform/extension/messagequeue/mysql/subscriber_heartbeat_store_test.go diff --git a/extension/messagequeue/mysql/subscriber_test.go b/platform/extension/messagequeue/mysql/subscriber_test.go similarity index 99% rename from extension/messagequeue/mysql/subscriber_test.go rename to platform/extension/messagequeue/mysql/subscriber_test.go index 50775e56..baa2fb6b 100644 --- a/extension/messagequeue/mysql/subscriber_test.go +++ b/platform/extension/messagequeue/mysql/subscriber_test.go @@ -27,8 +27,8 @@ import ( "go.uber.org/mock/gomock" "go.uber.org/zap/zaptest" - entityqueue "github.com/uber/submitqueue/entity/messagequeue" - extqueue "github.com/uber/submitqueue/extension/messagequeue" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" + extqueue "github.com/uber/submitqueue/platform/extension/messagequeue" ) func testSubscriptionConfig() extqueue.SubscriptionConfig { diff --git a/extension/messagequeue/publisher.go b/platform/extension/messagequeue/publisher.go similarity index 96% rename from extension/messagequeue/publisher.go rename to platform/extension/messagequeue/publisher.go index 5a9ef59c..cddba7bc 100644 --- a/extension/messagequeue/publisher.go +++ b/platform/extension/messagequeue/publisher.go @@ -19,7 +19,7 @@ package messagequeue import ( "context" - entityqueue "github.com/uber/submitqueue/entity/messagequeue" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" ) // Publisher publishes messages to topics. diff --git a/extension/messagequeue/queue.go b/platform/extension/messagequeue/queue.go similarity index 100% rename from extension/messagequeue/queue.go rename to platform/extension/messagequeue/queue.go diff --git a/extension/messagequeue/subscriber.go b/platform/extension/messagequeue/subscriber.go similarity index 100% rename from extension/messagequeue/subscriber.go rename to platform/extension/messagequeue/subscriber.go diff --git a/extension/messagequeue/subscription_config.go b/platform/extension/messagequeue/subscription_config.go similarity index 100% rename from extension/messagequeue/subscription_config.go rename to platform/extension/messagequeue/subscription_config.go diff --git a/extension/messagequeue/subscription_config_test.go b/platform/extension/messagequeue/subscription_config_test.go similarity index 100% rename from extension/messagequeue/subscription_config_test.go rename to platform/extension/messagequeue/subscription_config_test.go diff --git a/core/httpclient/BUILD.bazel b/platform/http/BUILD.bazel similarity index 67% rename from core/httpclient/BUILD.bazel rename to platform/http/BUILD.bazel index c28998ad..401c6f87 100644 --- a/core/httpclient/BUILD.bazel +++ b/platform/http/BUILD.bazel @@ -1,16 +1,16 @@ load("@rules_go//go:def.bzl", "go_library", "go_test") go_library( - name = "httpclient", + name = "http", srcs = ["transport.go"], - importpath = "github.com/uber/submitqueue/core/httpclient", + importpath = "github.com/uber/submitqueue/platform/http", visibility = ["//visibility:public"], ) go_test( - name = "httpclient_test", + name = "http_test", srcs = ["transport_test.go"], - embed = [":httpclient"], + embed = [":http"], deps = [ "@com_github_stretchr_testify//assert", "@com_github_stretchr_testify//require", diff --git a/platform/http/transport.go b/platform/http/transport.go new file mode 100644 index 00000000..34eda0f9 --- /dev/null +++ b/platform/http/transport.go @@ -0,0 +1,67 @@ +// Copyright (c) 2025 Uber Technologies, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Package http provides shared HTTP client helpers (e.g. base-URL transport) for code that calls external HTTP APIs. +package http + +import ( + nethttp "net/http" + "net/url" + "strings" +) + +// BaseURLTransport is a nethttp.RoundTripper that rewrites every request URL +// to resolve against a fixed base URL. This allows callers to make requests +// with relative paths (e.g. "/graphql") and have the transport prepend the +// configured base URL transparently. +type BaseURLTransport struct { + // BaseURL is the API base URL (e.g. "https://api.github.com"). + BaseURL *url.URL + // Next is the underlying RoundTripper. Defaults to nethttp.DefaultTransport if nil. + Next nethttp.RoundTripper +} + +// RoundTrip rewrites req.URL to resolve against BaseURL, then delegates to Next. +// The base URL path and request path are joined explicitly so that base URLs +// with a path component (e.g. "https://ghe.example.com/api") are handled +// correctly regardless of whether the request path starts with "/". +func (t *BaseURLTransport) RoundTrip(req *nethttp.Request) (*nethttp.Response, error) { + newReq := req.Clone(req.Context()) + + merged := *t.BaseURL + merged.Path = strings.TrimRight(t.BaseURL.Path, "/") + "/" + strings.TrimLeft(req.URL.Path, "/") + merged.RawQuery = req.URL.RawQuery + newReq.URL = &merged + + next := t.Next + if next == nil { + next = nethttp.DefaultTransport + } + return next.RoundTrip(newReq) +} + +// NewClient builds an *nethttp.Client with BaseURLTransport configured. +// Callers are responsible for layering additional transports (e.g. auth) and +// setting Timeout on the returned client. +func NewClient(rawBaseURL string) (*nethttp.Client, error) { + u, err := url.Parse(rawBaseURL) + if err != nil { + return nil, err + } + + return &nethttp.Client{Transport: &BaseURLTransport{ + BaseURL: u, + Next: nethttp.DefaultTransport, + }}, nil +} diff --git a/core/httpclient/transport_test.go b/platform/http/transport_test.go similarity index 54% rename from core/httpclient/transport_test.go rename to platform/http/transport_test.go index 7cbb710b..df554f0b 100644 --- a/core/httpclient/transport_test.go +++ b/platform/http/transport_test.go @@ -1,7 +1,21 @@ -package httpclient +// Copyright (c) 2025 Uber Technologies, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package http import ( - "net/http" + nethttp "net/http" "net/url" "testing" @@ -9,10 +23,10 @@ import ( "github.com/stretchr/testify/require" ) -// roundTripFunc is a test helper that implements http.RoundTripper via a function. -type roundTripFunc func(*http.Request) (*http.Response, error) +// roundTripFunc is a test helper that implements nethttp.RoundTripper via a function. +type roundTripFunc func(*nethttp.Request) (*nethttp.Response, error) -func (f roundTripFunc) RoundTrip(req *http.Request) (*http.Response, error) { +func (f roundTripFunc) RoundTrip(req *nethttp.Request) (*nethttp.Response, error) { return f(req) } @@ -42,13 +56,13 @@ func TestBaseURLTransport_RewritesURL(t *testing.T) { var capturedURL string transport := &BaseURLTransport{ BaseURL: mustParseURL(t, tt.baseURL), - Next: roundTripFunc(func(req *http.Request) (*http.Response, error) { + Next: roundTripFunc(func(req *nethttp.Request) (*nethttp.Response, error) { capturedURL = req.URL.String() - return &http.Response{StatusCode: http.StatusOK, Body: http.NoBody}, nil + return &nethttp.Response{StatusCode: nethttp.StatusOK, Body: nethttp.NoBody}, nil }), } - req, err := http.NewRequest(http.MethodGet, tt.requestPath, nil) + req, err := nethttp.NewRequest(nethttp.MethodGet, tt.requestPath, nil) require.NoError(t, err) _, err = transport.RoundTrip(req) @@ -61,12 +75,12 @@ func TestBaseURLTransport_RewritesURL(t *testing.T) { func TestBaseURLTransport_DoesNotMutateOriginalRequest(t *testing.T) { transport := &BaseURLTransport{ BaseURL: mustParseURL(t, "https://api.github.com"), - Next: roundTripFunc(func(req *http.Request) (*http.Response, error) { - return &http.Response{StatusCode: http.StatusOK, Body: http.NoBody}, nil + Next: roundTripFunc(func(req *nethttp.Request) (*nethttp.Response, error) { + return &nethttp.Response{StatusCode: nethttp.StatusOK, Body: nethttp.NoBody}, nil }), } - req, err := http.NewRequest(http.MethodGet, "/graphql", nil) + req, err := nethttp.NewRequest(nethttp.MethodGet, "/graphql", nil) require.NoError(t, err) originalURL := req.URL.String() diff --git a/core/metrics/BUILD.bazel b/platform/metrics/BUILD.bazel similarity index 78% rename from core/metrics/BUILD.bazel rename to platform/metrics/BUILD.bazel index c7ec1170..5809a580 100644 --- a/core/metrics/BUILD.bazel +++ b/platform/metrics/BUILD.bazel @@ -3,10 +3,10 @@ load("@rules_go//go:def.bzl", "go_library", "go_test") go_library( name = "metrics", srcs = ["metrics.go"], - importpath = "github.com/uber/submitqueue/core/metrics", + importpath = "github.com/uber/submitqueue/platform/metrics", visibility = ["//visibility:public"], deps = [ - "//core/errs", + "//platform/errs", "@com_github_uber_go_tally//:tally", ], ) @@ -16,7 +16,7 @@ go_test( srcs = ["metrics_test.go"], embed = [":metrics"], deps = [ - "//core/errs", + "//platform/errs", "@com_github_stretchr_testify//assert", "@com_github_uber_go_tally//:tally", ], diff --git a/core/metrics/README.md b/platform/metrics/README.md similarity index 90% rename from core/metrics/README.md rename to platform/metrics/README.md index b0b6df1b..16f8fe0f 100644 --- a/core/metrics/README.md +++ b/platform/metrics/README.md @@ -1,6 +1,6 @@ -# Metrics Utilities (`core/metrics`) +# Metrics Utilities (`platform/metrics`) -The `metrics` package provides reusable helpers for emitting counters, timers, histograms, and gauges on a `tally.Scope`. It standardizes metric names across controllers and integrates with `core/errs` for automatic error classification tags. +The `metrics` package provides reusable helpers for emitting counters, timers, histograms, and gauges on a `tally.Scope`. It standardizes metric names across controllers and integrates with `platform/errs` for automatic error classification tags. ## Design @@ -8,7 +8,7 @@ The `metrics` package provides reusable helpers for emitting counters, timers, h **Operation lifecycle** — `Begin` and `Complete` tie the full metrics lifecycle together. `Begin` captures the start time and emits `{name}.called`; `Complete` emits succeeded/failed counters, a latency timer, and a latency histogram. This prevents mismatched or forgotten metrics calls. -**Error-aware tagging** — `ErrorTags` integrates with `core/errs` to produce `error_origin=user|infra`, `retryable=true|false`, and `dependency=true` tags automatically. `Complete` uses these to tag latency metrics on failure. +**Error-aware tagging** — `ErrorTags` integrates with `platform/errs` to produce `error_origin=user|infra`, `retryable=true|false`, and `dependency=true` tags automatically. `Complete` uses these to tag latency metrics on failure. **Consistent naming** — all Named helpers follow the `{name}.{sub}` sub-scope pattern, producing structured metric paths like `process.called`, `publish.attempts`, `consumer.pending_messages`. @@ -79,7 +79,7 @@ h.RecordDuration(elapsed) ## Error Tags -`ErrorTags` classifies errors using `core/errs` and returns tags for dimensional filtering: +`ErrorTags` classifies errors using `platform/errs` and returns tags for dimensional filtering: | Tag | Values | Source | |-----|--------|--------| diff --git a/core/metrics/metrics.go b/platform/metrics/metrics.go similarity index 98% rename from core/metrics/metrics.go rename to platform/metrics/metrics.go index aebf23d0..473e3e27 100644 --- a/core/metrics/metrics.go +++ b/platform/metrics/metrics.go @@ -18,7 +18,7 @@ import ( "time" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/errs" + "github.com/uber/submitqueue/platform/errs" ) // Tag is a key-value pair attached to a metric for dimensional filtering. @@ -138,7 +138,7 @@ func NamedGauge(scope tally.Scope, name string, gauge string, value float64, tag tagged(scope, tags).SubScope(name).Gauge(gauge).Update(value) } -// ErrorTags returns classification tags for an error using core/errs. +// ErrorTags returns classification tags for an error using platform/errs. // Returns error_origin (user|infra), retryable (true|false), and // dependency (true) tags. Returns nil for a nil error. func ErrorTags(err error) []Tag { diff --git a/core/metrics/metrics_test.go b/platform/metrics/metrics_test.go similarity index 99% rename from core/metrics/metrics_test.go rename to platform/metrics/metrics_test.go index ed695f9e..e0ea63d7 100644 --- a/core/metrics/metrics_test.go +++ b/platform/metrics/metrics_test.go @@ -21,7 +21,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/errs" + "github.com/uber/submitqueue/platform/errs" ) func TestBegin_EmitsCalled(t *testing.T) { diff --git a/runway/core/topickey/BUILD.bazel b/runway/core/topickey/BUILD.bazel index 9aa38b1a..94163f0d 100644 --- a/runway/core/topickey/BUILD.bazel +++ b/runway/core/topickey/BUILD.bazel @@ -5,5 +5,5 @@ go_library( srcs = ["topickey.go"], importpath = "github.com/uber/submitqueue/runway/core/topickey", visibility = ["//visibility:public"], - deps = ["//core/consumer"], + deps = ["//platform/consumer"], ) diff --git a/runway/core/topickey/topickey.go b/runway/core/topickey/topickey.go index 7e919465..ede0b83a 100644 --- a/runway/core/topickey/topickey.go +++ b/runway/core/topickey/topickey.go @@ -19,7 +19,7 @@ // from them. package topickey -import "github.com/uber/submitqueue/core/consumer" +import "github.com/uber/submitqueue/platform/consumer" // TopicKey is the shared pipeline stage identifier type. type TopicKey = consumer.TopicKey diff --git a/runway/entity/BUILD.bazel b/runway/entity/BUILD.bazel index a66f9012..d8b169cb 100644 --- a/runway/entity/BUILD.bazel +++ b/runway/entity/BUILD.bazel @@ -6,8 +6,8 @@ go_library( importpath = "github.com/uber/submitqueue/runway/entity", visibility = ["//visibility:public"], deps = [ - "//entity/change", - "//entity/mergestrategy", + "//platform/base/change", + "//platform/base/mergestrategy", ], ) @@ -16,8 +16,8 @@ go_test( srcs = ["merge_test.go"], embed = [":entity"], deps = [ - "//entity/change", - "//entity/mergestrategy", + "//platform/base/change", + "//platform/base/mergestrategy", "@com_github_stretchr_testify//assert", "@com_github_stretchr_testify//require", ], diff --git a/runway/entity/merge.go b/runway/entity/merge.go index cf2a50f3..ebeffe3c 100644 --- a/runway/entity/merge.go +++ b/runway/entity/merge.go @@ -29,8 +29,8 @@ package entity import ( "encoding/json" - "github.com/uber/submitqueue/entity/change" - "github.com/uber/submitqueue/entity/mergestrategy" + "github.com/uber/submitqueue/platform/base/change" + "github.com/uber/submitqueue/platform/base/mergestrategy" ) // MergeStep is one step of an ordered merge: a single set of change(s) applied diff --git a/runway/entity/merge_test.go b/runway/entity/merge_test.go index 19ab9fa4..2865f7b6 100644 --- a/runway/entity/merge_test.go +++ b/runway/entity/merge_test.go @@ -19,8 +19,8 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/uber/submitqueue/entity/change" - "github.com/uber/submitqueue/entity/mergestrategy" + "github.com/uber/submitqueue/platform/base/change" + "github.com/uber/submitqueue/platform/base/mergestrategy" ) func TestMergeRequestRoundTrip(t *testing.T) { diff --git a/stovepipe/core/topickey/BUILD.bazel b/stovepipe/core/topickey/BUILD.bazel index faac25f7..0ce34bf0 100644 --- a/stovepipe/core/topickey/BUILD.bazel +++ b/stovepipe/core/topickey/BUILD.bazel @@ -5,5 +5,5 @@ go_library( srcs = ["topickey.go"], importpath = "github.com/uber/submitqueue/stovepipe/core/topickey", visibility = ["//visibility:public"], - deps = ["//core/consumer"], + deps = ["//platform/consumer"], ) diff --git a/stovepipe/core/topickey/topickey.go b/stovepipe/core/topickey/topickey.go index 4bc7e714..2e5f035a 100644 --- a/stovepipe/core/topickey/topickey.go +++ b/stovepipe/core/topickey/topickey.go @@ -15,7 +15,7 @@ // Package topickey defines Stovepipe pipeline stage identifiers. package topickey -import "github.com/uber/submitqueue/core/consumer" +import "github.com/uber/submitqueue/platform/consumer" // TopicKey is the shared pipeline stage identifier type. type TopicKey = consumer.TopicKey diff --git a/stovepipe/gateway/controller/BUILD.bazel b/stovepipe/gateway/controller/BUILD.bazel index de4fdb95..65f839ed 100644 --- a/stovepipe/gateway/controller/BUILD.bazel +++ b/stovepipe/gateway/controller/BUILD.bazel @@ -6,7 +6,7 @@ go_library( importpath = "github.com/uber/submitqueue/stovepipe/gateway/controller", visibility = ["//visibility:public"], deps = [ - "//core/metrics", + "//platform/metrics", "//stovepipe/gateway/protopb", "@com_github_uber_go_tally//:tally", "@org_uber_go_zap//:zap", diff --git a/stovepipe/gateway/controller/ping.go b/stovepipe/gateway/controller/ping.go index 73b13063..881d30dc 100644 --- a/stovepipe/gateway/controller/ping.go +++ b/stovepipe/gateway/controller/ping.go @@ -20,7 +20,7 @@ import ( "time" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/metrics" + "github.com/uber/submitqueue/platform/metrics" pb "github.com/uber/submitqueue/stovepipe/gateway/protopb" "go.uber.org/zap" ) diff --git a/stovepipe/orchestrator/controller/BUILD.bazel b/stovepipe/orchestrator/controller/BUILD.bazel index ba95a123..7f8a76ac 100644 --- a/stovepipe/orchestrator/controller/BUILD.bazel +++ b/stovepipe/orchestrator/controller/BUILD.bazel @@ -6,7 +6,7 @@ go_library( importpath = "github.com/uber/submitqueue/stovepipe/orchestrator/controller", visibility = ["//visibility:public"], deps = [ - "//core/metrics", + "//platform/metrics", "//stovepipe/orchestrator/protopb", "@com_github_uber_go_tally//:tally", "@org_uber_go_zap//:zap", diff --git a/stovepipe/orchestrator/controller/ping.go b/stovepipe/orchestrator/controller/ping.go index 64379903..331eb615 100644 --- a/stovepipe/orchestrator/controller/ping.go +++ b/stovepipe/orchestrator/controller/ping.go @@ -20,7 +20,7 @@ import ( "time" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/metrics" + "github.com/uber/submitqueue/platform/metrics" pb "github.com/uber/submitqueue/stovepipe/orchestrator/protopb" "go.uber.org/zap" ) diff --git a/submitqueue/core/changeset/BUILD.bazel b/submitqueue/core/changeset/BUILD.bazel index 938225d7..916e8c2d 100644 --- a/submitqueue/core/changeset/BUILD.bazel +++ b/submitqueue/core/changeset/BUILD.bazel @@ -9,7 +9,7 @@ go_library( importpath = "github.com/uber/submitqueue/submitqueue/core/changeset", visibility = ["//visibility:public"], deps = [ - "//entity/change", + "//platform/base/change", "//submitqueue/entity", "//submitqueue/extension/storage", ], @@ -20,7 +20,7 @@ go_test( srcs = ["resolver_test.go"], embed = [":changeset"], deps = [ - "//entity/change", + "//platform/base/change", "//submitqueue/entity", "//submitqueue/extension/storage/mock", "@com_github_stretchr_testify//assert", diff --git a/submitqueue/core/changeset/changeset.go b/submitqueue/core/changeset/changeset.go index 6aaa752d..0f798a51 100644 --- a/submitqueue/core/changeset/changeset.go +++ b/submitqueue/core/changeset/changeset.go @@ -26,7 +26,7 @@ package changeset import ( "context" - "github.com/uber/submitqueue/entity/change" + "github.com/uber/submitqueue/platform/base/change" "github.com/uber/submitqueue/submitqueue/entity" ) diff --git a/submitqueue/core/changeset/fake/BUILD.bazel b/submitqueue/core/changeset/fake/BUILD.bazel index 247d2cc8..c41c3a22 100644 --- a/submitqueue/core/changeset/fake/BUILD.bazel +++ b/submitqueue/core/changeset/fake/BUILD.bazel @@ -6,7 +6,7 @@ go_library( importpath = "github.com/uber/submitqueue/submitqueue/core/changeset/fake", visibility = ["//visibility:public"], deps = [ - "//entity/change", + "//platform/base/change", "//submitqueue/core/changeset", "//submitqueue/entity", ], @@ -17,7 +17,7 @@ go_test( srcs = ["fake_test.go"], embed = [":fake"], deps = [ - "//entity/change", + "//platform/base/change", "//submitqueue/entity", "@com_github_stretchr_testify//assert", "@com_github_stretchr_testify//require", diff --git a/submitqueue/core/changeset/fake/fake.go b/submitqueue/core/changeset/fake/fake.go index 800c2d62..d1135884 100644 --- a/submitqueue/core/changeset/fake/fake.go +++ b/submitqueue/core/changeset/fake/fake.go @@ -24,7 +24,7 @@ package fake import ( "context" - "github.com/uber/submitqueue/entity/change" + "github.com/uber/submitqueue/platform/base/change" "github.com/uber/submitqueue/submitqueue/core/changeset" "github.com/uber/submitqueue/submitqueue/entity" ) diff --git a/submitqueue/core/changeset/fake/fake_test.go b/submitqueue/core/changeset/fake/fake_test.go index 0a29f12d..1471dc1c 100644 --- a/submitqueue/core/changeset/fake/fake_test.go +++ b/submitqueue/core/changeset/fake/fake_test.go @@ -22,7 +22,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/uber/submitqueue/entity/change" + "github.com/uber/submitqueue/platform/base/change" "github.com/uber/submitqueue/submitqueue/entity" ) diff --git a/submitqueue/core/changeset/mock/BUILD.bazel b/submitqueue/core/changeset/mock/BUILD.bazel index 5a37a502..135947fa 100644 --- a/submitqueue/core/changeset/mock/BUILD.bazel +++ b/submitqueue/core/changeset/mock/BUILD.bazel @@ -6,7 +6,7 @@ go_library( importpath = "github.com/uber/submitqueue/submitqueue/core/changeset/mock", visibility = ["//visibility:public"], deps = [ - "//entity/change", + "//platform/base/change", "//submitqueue/entity", "@org_uber_go_mock//gomock", ], diff --git a/submitqueue/core/changeset/mock/changeset_mock.go b/submitqueue/core/changeset/mock/changeset_mock.go index 075cbcdc..7e5d318f 100644 --- a/submitqueue/core/changeset/mock/changeset_mock.go +++ b/submitqueue/core/changeset/mock/changeset_mock.go @@ -13,7 +13,7 @@ import ( context "context" reflect "reflect" - "github.com/uber/submitqueue/entity/change" + "github.com/uber/submitqueue/platform/base/change" entity "github.com/uber/submitqueue/submitqueue/entity" gomock "go.uber.org/mock/gomock" ) diff --git a/submitqueue/core/changeset/resolver.go b/submitqueue/core/changeset/resolver.go index 370608b7..049b3a0d 100644 --- a/submitqueue/core/changeset/resolver.go +++ b/submitqueue/core/changeset/resolver.go @@ -18,7 +18,7 @@ import ( "context" "fmt" - "github.com/uber/submitqueue/entity/change" + "github.com/uber/submitqueue/platform/base/change" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/storage" ) diff --git a/submitqueue/core/changeset/resolver_test.go b/submitqueue/core/changeset/resolver_test.go index f152902e..365443fd 100644 --- a/submitqueue/core/changeset/resolver_test.go +++ b/submitqueue/core/changeset/resolver_test.go @@ -23,7 +23,7 @@ import ( "github.com/stretchr/testify/require" "go.uber.org/mock/gomock" - "github.com/uber/submitqueue/entity/change" + "github.com/uber/submitqueue/platform/base/change" "github.com/uber/submitqueue/submitqueue/entity" storagemock "github.com/uber/submitqueue/submitqueue/extension/storage/mock" ) diff --git a/submitqueue/core/fakemarker/BUILD.bazel b/submitqueue/core/fakemarker/BUILD.bazel index 61ee9f2e..4bf88496 100644 --- a/submitqueue/core/fakemarker/BUILD.bazel +++ b/submitqueue/core/fakemarker/BUILD.bazel @@ -5,7 +5,7 @@ go_library( srcs = ["fakemarker.go"], importpath = "github.com/uber/submitqueue/submitqueue/core/fakemarker", visibility = ["//visibility:public"], - deps = ["//entity/change"], + deps = ["//platform/base/change"], ) go_test( @@ -13,7 +13,7 @@ go_test( srcs = ["fakemarker_test.go"], embed = [":fakemarker"], deps = [ - "//entity/change", + "//platform/base/change", "@com_github_stretchr_testify//assert", ], ) diff --git a/submitqueue/core/fakemarker/fakemarker.go b/submitqueue/core/fakemarker/fakemarker.go index 94d438bb..f729b626 100644 --- a/submitqueue/core/fakemarker/fakemarker.go +++ b/submitqueue/core/fakemarker/fakemarker.go @@ -23,7 +23,7 @@ package fakemarker import ( "strings" - "github.com/uber/submitqueue/entity/change" + "github.com/uber/submitqueue/platform/base/change" ) // Prefix introduces a marker token in a change URI: "sq-fake=". diff --git a/submitqueue/core/fakemarker/fakemarker_test.go b/submitqueue/core/fakemarker/fakemarker_test.go index 51cf855a..8e827f5d 100644 --- a/submitqueue/core/fakemarker/fakemarker_test.go +++ b/submitqueue/core/fakemarker/fakemarker_test.go @@ -18,7 +18,7 @@ import ( "testing" "github.com/stretchr/testify/assert" - "github.com/uber/submitqueue/entity/change" + "github.com/uber/submitqueue/platform/base/change" ) func TestToken(t *testing.T) { diff --git a/submitqueue/core/request/BUILD.bazel b/submitqueue/core/request/BUILD.bazel index 24e04ade..c2a6e589 100644 --- a/submitqueue/core/request/BUILD.bazel +++ b/submitqueue/core/request/BUILD.bazel @@ -9,8 +9,8 @@ go_library( importpath = "github.com/uber/submitqueue/submitqueue/core/request", visibility = ["//visibility:public"], deps = [ - "//core/consumer", - "//entity/messagequeue", + "//platform/base/messagequeue", + "//platform/consumer", "//submitqueue/core/topickey", "//submitqueue/entity", "//submitqueue/extension/storage", @@ -25,9 +25,9 @@ go_test( ], embed = [":request"], deps = [ - "//core/consumer", - "//entity/messagequeue", - "//extension/messagequeue/mock", + "//platform/base/messagequeue", + "//platform/consumer", + "//platform/extension/messagequeue/mock", "//submitqueue/core/topickey", "//submitqueue/entity", "//submitqueue/extension/storage", diff --git a/submitqueue/core/request/log.go b/submitqueue/core/request/log.go index 3f1cd417..c85cb904 100644 --- a/submitqueue/core/request/log.go +++ b/submitqueue/core/request/log.go @@ -18,8 +18,8 @@ import ( "context" "fmt" - "github.com/uber/submitqueue/core/consumer" - entityqueue "github.com/uber/submitqueue/entity/messagequeue" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" + "github.com/uber/submitqueue/platform/consumer" "github.com/uber/submitqueue/submitqueue/core/topickey" "github.com/uber/submitqueue/submitqueue/entity" ) diff --git a/submitqueue/core/request/log_test.go b/submitqueue/core/request/log_test.go index 512ee668..bda0c81b 100644 --- a/submitqueue/core/request/log_test.go +++ b/submitqueue/core/request/log_test.go @@ -20,9 +20,9 @@ import ( "testing" "github.com/stretchr/testify/require" - "github.com/uber/submitqueue/core/consumer" - entityqueue "github.com/uber/submitqueue/entity/messagequeue" - queuemock "github.com/uber/submitqueue/extension/messagequeue/mock" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" + "github.com/uber/submitqueue/platform/consumer" + queuemock "github.com/uber/submitqueue/platform/extension/messagequeue/mock" "github.com/uber/submitqueue/submitqueue/core/topickey" "github.com/uber/submitqueue/submitqueue/entity" "go.uber.org/mock/gomock" diff --git a/submitqueue/core/topickey/BUILD.bazel b/submitqueue/core/topickey/BUILD.bazel index 3d15ae3b..46de3c0a 100644 --- a/submitqueue/core/topickey/BUILD.bazel +++ b/submitqueue/core/topickey/BUILD.bazel @@ -5,5 +5,5 @@ go_library( srcs = ["topickey.go"], importpath = "github.com/uber/submitqueue/submitqueue/core/topickey", visibility = ["//visibility:public"], - deps = ["//core/consumer"], + deps = ["//platform/consumer"], ) diff --git a/submitqueue/core/topickey/topickey.go b/submitqueue/core/topickey/topickey.go index b4fbbe42..426de3d3 100644 --- a/submitqueue/core/topickey/topickey.go +++ b/submitqueue/core/topickey/topickey.go @@ -15,7 +15,7 @@ // Package topickey defines SubmitQueue pipeline stage identifiers. package topickey -import "github.com/uber/submitqueue/core/consumer" +import "github.com/uber/submitqueue/platform/consumer" // TopicKey is the shared pipeline stage identifier type. type TopicKey = consumer.TopicKey diff --git a/submitqueue/entity/BUILD.bazel b/submitqueue/entity/BUILD.bazel index 281e86c3..231dcbd6 100644 --- a/submitqueue/entity/BUILD.bazel +++ b/submitqueue/entity/BUILD.bazel @@ -22,8 +22,8 @@ go_library( importpath = "github.com/uber/submitqueue/submitqueue/entity", visibility = ["//visibility:public"], deps = [ - "//entity/change", - "//entity/mergestrategy", + "//platform/base/change", + "//platform/base/mergestrategy", ], ) @@ -39,8 +39,8 @@ go_test( ], embed = [":entity"], deps = [ - "//entity/change", - "//entity/mergestrategy", + "//platform/base/change", + "//platform/base/mergestrategy", "@com_github_stretchr_testify//assert", "@com_github_stretchr_testify//require", ], diff --git a/submitqueue/entity/land_request.go b/submitqueue/entity/land_request.go index 282157ef..a9b7a609 100644 --- a/submitqueue/entity/land_request.go +++ b/submitqueue/entity/land_request.go @@ -17,8 +17,8 @@ package entity import ( "encoding/json" - "github.com/uber/submitqueue/entity/change" - "github.com/uber/submitqueue/entity/mergestrategy" + "github.com/uber/submitqueue/platform/base/change" + "github.com/uber/submitqueue/platform/base/mergestrategy" ) // LandRequest represents the gateway-owned fields of a land request sent over the queue diff --git a/submitqueue/entity/land_request_test.go b/submitqueue/entity/land_request_test.go index 4215c6cb..7ca75a77 100644 --- a/submitqueue/entity/land_request_test.go +++ b/submitqueue/entity/land_request_test.go @@ -19,8 +19,8 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/uber/submitqueue/entity/change" - "github.com/uber/submitqueue/entity/mergestrategy" + "github.com/uber/submitqueue/platform/base/change" + "github.com/uber/submitqueue/platform/base/mergestrategy" ) func TestLandRequest_ToBytes(t *testing.T) { diff --git a/submitqueue/entity/push_result.go b/submitqueue/entity/push_result.go index 109a35ec..0b1352c0 100644 --- a/submitqueue/entity/push_result.go +++ b/submitqueue/entity/push_result.go @@ -14,7 +14,7 @@ package entity -import "github.com/uber/submitqueue/entity/change" +import "github.com/uber/submitqueue/platform/base/change" // OutcomeStatus describes what happened to a single Change during a push. type OutcomeStatus string diff --git a/submitqueue/entity/request.go b/submitqueue/entity/request.go index dc0a95e5..0b88a25b 100644 --- a/submitqueue/entity/request.go +++ b/submitqueue/entity/request.go @@ -17,8 +17,8 @@ package entity import ( "encoding/json" - "github.com/uber/submitqueue/entity/change" - "github.com/uber/submitqueue/entity/mergestrategy" + "github.com/uber/submitqueue/platform/base/change" + "github.com/uber/submitqueue/platform/base/mergestrategy" ) // RequestState defines the possible states of a land request. They are internal and used to implement a state machine. A separate RequestStatus type is used to track the customer-friendly status of a request. diff --git a/submitqueue/entity/request_test.go b/submitqueue/entity/request_test.go index 2aab64eb..5b8d02ba 100644 --- a/submitqueue/entity/request_test.go +++ b/submitqueue/entity/request_test.go @@ -19,8 +19,8 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/uber/submitqueue/entity/change" - "github.com/uber/submitqueue/entity/mergestrategy" + "github.com/uber/submitqueue/platform/base/change" + "github.com/uber/submitqueue/platform/base/mergestrategy" ) func TestRequest_ToBytes(t *testing.T) { diff --git a/submitqueue/extension/buildrunner/BUILD.bazel b/submitqueue/extension/buildrunner/BUILD.bazel index 3896b89e..3f335447 100644 --- a/submitqueue/extension/buildrunner/BUILD.bazel +++ b/submitqueue/extension/buildrunner/BUILD.bazel @@ -9,7 +9,7 @@ go_library( importpath = "github.com/uber/submitqueue/submitqueue/extension/buildrunner", visibility = ["//visibility:public"], deps = [ - "//entity/change", + "//platform/base/change", "//submitqueue/core/changeset", "//submitqueue/entity", ], diff --git a/submitqueue/extension/buildrunner/buildkite/BUILD.bazel b/submitqueue/extension/buildrunner/buildkite/BUILD.bazel index 78658d3a..dc5ef4dd 100644 --- a/submitqueue/extension/buildrunner/buildkite/BUILD.bazel +++ b/submitqueue/extension/buildrunner/buildkite/BUILD.bazel @@ -9,7 +9,7 @@ go_library( importpath = "github.com/uber/submitqueue/submitqueue/extension/buildrunner/buildkite", visibility = ["//visibility:public"], deps = [ - "//entity/change", + "//platform/base/change", "//submitqueue/core/changeset", "//submitqueue/entity", "//submitqueue/extension/buildrunner", @@ -22,8 +22,8 @@ go_test( srcs = ["buildkite_test.go"], embed = [":buildkite"], deps = [ - "//core/httpclient", - "//entity/change", + "//platform/base/change", + "//platform/http", "//submitqueue/core/changeset", "//submitqueue/core/changeset/fake", "//submitqueue/entity", diff --git a/submitqueue/extension/buildrunner/buildkite/buildkite.go b/submitqueue/extension/buildrunner/buildkite/buildkite.go index 1448fc7a..05898561 100644 --- a/submitqueue/extension/buildrunner/buildkite/buildkite.go +++ b/submitqueue/extension/buildrunner/buildkite/buildkite.go @@ -38,7 +38,7 @@ import ( "go.uber.org/zap" - "github.com/uber/submitqueue/entity/change" + "github.com/uber/submitqueue/platform/base/change" "github.com/uber/submitqueue/submitqueue/core/changeset" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/buildrunner" @@ -78,12 +78,12 @@ var _ buildrunner.BuildRunner = (*runner)(nil) // Params holds the dependencies for a Buildkite BuildRunner. The caller is // responsible for configuring HTTPClient with the base URL (via -// httpclient.BaseURLTransport) and auth (via an Authorization-header transport). +// platform/http.BaseURLTransport) and auth (via an Authorization-header transport). type Params struct { // Config holds the per-queue identity for this BuildRunner. Config buildrunner.Config // HTTPClient is a pre-configured HTTP client. The caller is responsible - // for the base URL (via httpclient.BaseURLTransport) and auth (via a + // for the base URL (via platform/http.BaseURLTransport) and auth (via a // transport layer). If nil, http.DefaultClient is used. HTTPClient *http.Client // Resolver resolves a batch's changes (base and head batches). diff --git a/submitqueue/extension/buildrunner/buildkite/buildkite_test.go b/submitqueue/extension/buildrunner/buildkite/buildkite_test.go index 5e70e394..60de0abd 100644 --- a/submitqueue/extension/buildrunner/buildkite/buildkite_test.go +++ b/submitqueue/extension/buildrunner/buildkite/buildkite_test.go @@ -26,8 +26,8 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/uber/submitqueue/core/httpclient" - "github.com/uber/submitqueue/entity/change" + "github.com/uber/submitqueue/platform/base/change" + phttp "github.com/uber/submitqueue/platform/http" "github.com/uber/submitqueue/submitqueue/core/changeset" changesetfake "github.com/uber/submitqueue/submitqueue/core/changeset/fake" "github.com/uber/submitqueue/submitqueue/entity" @@ -41,7 +41,7 @@ func newTestRunner(t *testing.T, handler http.Handler, resolver ...changeset.Res t.Helper() srv := httptest.NewServer(handler) t.Cleanup(srv.Close) - c, err := httpclient.NewClient(srv.URL) + c, err := phttp.NewClient(srv.URL) require.NoError(t, err) r := changeset.Resolver(changesetfake.New()) if len(resolver) > 0 { diff --git a/submitqueue/extension/buildrunner/fake/BUILD.bazel b/submitqueue/extension/buildrunner/fake/BUILD.bazel index dc6f2fc2..96019342 100644 --- a/submitqueue/extension/buildrunner/fake/BUILD.bazel +++ b/submitqueue/extension/buildrunner/fake/BUILD.bazel @@ -18,7 +18,7 @@ go_test( srcs = ["fake_test.go"], embed = [":fake"], deps = [ - "//entity/change", + "//platform/base/change", "//submitqueue/core/changeset/fake", "//submitqueue/entity", "//submitqueue/extension/buildrunner", diff --git a/submitqueue/extension/buildrunner/fake/fake_test.go b/submitqueue/extension/buildrunner/fake/fake_test.go index 0d5c2aee..e342b97f 100644 --- a/submitqueue/extension/buildrunner/fake/fake_test.go +++ b/submitqueue/extension/buildrunner/fake/fake_test.go @@ -20,7 +20,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/uber/submitqueue/entity/change" + "github.com/uber/submitqueue/platform/base/change" changesetfake "github.com/uber/submitqueue/submitqueue/core/changeset/fake" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/buildrunner" diff --git a/submitqueue/extension/buildrunner/githubactions/BUILD.bazel b/submitqueue/extension/buildrunner/githubactions/BUILD.bazel index 88a8f0c0..1b2bab7a 100644 --- a/submitqueue/extension/buildrunner/githubactions/BUILD.bazel +++ b/submitqueue/extension/buildrunner/githubactions/BUILD.bazel @@ -9,7 +9,7 @@ go_library( importpath = "github.com/uber/submitqueue/submitqueue/extension/buildrunner/githubactions", visibility = ["//visibility:public"], deps = [ - "//entity/change", + "//platform/base/change", "//submitqueue/core/changeset", "//submitqueue/entity", "//submitqueue/extension/buildrunner", @@ -22,8 +22,8 @@ go_test( srcs = ["githubactions_test.go"], embed = [":githubactions"], deps = [ - "//core/httpclient", - "//entity/change", + "//platform/base/change", + "//platform/http", "//submitqueue/core/changeset", "//submitqueue/core/changeset/fake", "//submitqueue/entity", diff --git a/submitqueue/extension/buildrunner/githubactions/githubactions.go b/submitqueue/extension/buildrunner/githubactions/githubactions.go index c5ae4f62..4b1c70b3 100644 --- a/submitqueue/extension/buildrunner/githubactions/githubactions.go +++ b/submitqueue/extension/buildrunner/githubactions/githubactions.go @@ -29,7 +29,7 @@ import ( "go.uber.org/zap" - "github.com/uber/submitqueue/entity/change" + "github.com/uber/submitqueue/platform/base/change" "github.com/uber/submitqueue/submitqueue/core/changeset" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/buildrunner" @@ -56,7 +56,7 @@ type Params struct { // Config holds the per-queue identity for this BuildRunner. Config buildrunner.Config // HTTPClient is a pre-configured GitHub API client. The caller is responsible - // for base URL resolution (e.g. via httpclient.BaseURLTransport) and auth. + // for base URL resolution (e.g. via platform/http.BaseURLTransport) and auth. // The token needs actions:write to dispatch/cancel workflows and actions:read // to poll status. HTTPClient *http.Client diff --git a/submitqueue/extension/buildrunner/githubactions/githubactions_test.go b/submitqueue/extension/buildrunner/githubactions/githubactions_test.go index 987f04cf..882984a0 100644 --- a/submitqueue/extension/buildrunner/githubactions/githubactions_test.go +++ b/submitqueue/extension/buildrunner/githubactions/githubactions_test.go @@ -28,8 +28,8 @@ import ( "github.com/stretchr/testify/require" "go.uber.org/zap" - "github.com/uber/submitqueue/core/httpclient" - "github.com/uber/submitqueue/entity/change" + "github.com/uber/submitqueue/platform/base/change" + phttp "github.com/uber/submitqueue/platform/http" "github.com/uber/submitqueue/submitqueue/core/changeset" changesetfake "github.com/uber/submitqueue/submitqueue/core/changeset/fake" "github.com/uber/submitqueue/submitqueue/entity" @@ -41,7 +41,7 @@ func newTestRunner(t *testing.T, handler http.Handler, resolver ...changeset.Res srv := httptest.NewServer(handler) t.Cleanup(srv.Close) - c, err := httpclient.NewClient(srv.URL) + c, err := phttp.NewClient(srv.URL) require.NoError(t, err) r := changeset.Resolver(changesetfake.New()) diff --git a/submitqueue/extension/buildrunner/resolve.go b/submitqueue/extension/buildrunner/resolve.go index ad25fccd..41d1069b 100644 --- a/submitqueue/extension/buildrunner/resolve.go +++ b/submitqueue/extension/buildrunner/resolve.go @@ -17,7 +17,7 @@ package buildrunner import ( "context" - "github.com/uber/submitqueue/entity/change" + "github.com/uber/submitqueue/platform/base/change" "github.com/uber/submitqueue/submitqueue/core/changeset" "github.com/uber/submitqueue/submitqueue/entity" ) diff --git a/submitqueue/extension/changeprovider/fake/BUILD.bazel b/submitqueue/extension/changeprovider/fake/BUILD.bazel index 6d3538c0..70612844 100644 --- a/submitqueue/extension/changeprovider/fake/BUILD.bazel +++ b/submitqueue/extension/changeprovider/fake/BUILD.bazel @@ -17,7 +17,7 @@ go_test( srcs = ["fake_test.go"], embed = [":fake"], deps = [ - "//entity/change", + "//platform/base/change", "//submitqueue/entity", "//submitqueue/extension/changeprovider", "@com_github_stretchr_testify//assert", diff --git a/submitqueue/extension/changeprovider/fake/fake_test.go b/submitqueue/extension/changeprovider/fake/fake_test.go index f4d8698b..9a9c75f5 100644 --- a/submitqueue/extension/changeprovider/fake/fake_test.go +++ b/submitqueue/extension/changeprovider/fake/fake_test.go @@ -20,7 +20,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/uber/submitqueue/entity/change" + "github.com/uber/submitqueue/platform/base/change" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/changeprovider" ) diff --git a/submitqueue/extension/changeprovider/github/BUILD.bazel b/submitqueue/extension/changeprovider/github/BUILD.bazel index c13af6f6..92204740 100644 --- a/submitqueue/extension/changeprovider/github/BUILD.bazel +++ b/submitqueue/extension/changeprovider/github/BUILD.bazel @@ -11,8 +11,8 @@ go_library( importpath = "github.com/uber/submitqueue/submitqueue/extension/changeprovider/github", visibility = ["//visibility:public"], deps = [ - "//core/metrics", - "//entity/change/github", + "//platform/base/change/github", + "//platform/metrics", "//submitqueue/entity", "//submitqueue/extension/changeprovider", "@com_github_uber_go_tally//:tally", @@ -29,9 +29,9 @@ go_test( ], embed = [":github"], deps = [ - "//core/httpclient", - "//entity/change", - "//entity/change/github", + "//platform/base/change", + "//platform/base/change/github", + "//platform/http", "//submitqueue/entity", "//submitqueue/extension/changeprovider", "@com_github_stretchr_testify//assert", diff --git a/submitqueue/extension/changeprovider/github/convert.go b/submitqueue/extension/changeprovider/github/convert.go index 7fa9b795..0308d20f 100644 --- a/submitqueue/extension/changeprovider/github/convert.go +++ b/submitqueue/extension/changeprovider/github/convert.go @@ -1,7 +1,7 @@ package github import ( - entitygithub "github.com/uber/submitqueue/entity/change/github" + entitygithub "github.com/uber/submitqueue/platform/base/change/github" "github.com/uber/submitqueue/submitqueue/entity" ) diff --git a/submitqueue/extension/changeprovider/github/provider.go b/submitqueue/extension/changeprovider/github/provider.go index 81675a29..67907deb 100644 --- a/submitqueue/extension/changeprovider/github/provider.go +++ b/submitqueue/extension/changeprovider/github/provider.go @@ -9,8 +9,8 @@ import ( "github.com/uber-go/tally" "go.uber.org/zap" - coremetrics "github.com/uber/submitqueue/core/metrics" - entitygithub "github.com/uber/submitqueue/entity/change/github" + entitygithub "github.com/uber/submitqueue/platform/base/change/github" + coremetrics "github.com/uber/submitqueue/platform/metrics" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/changeprovider" ) diff --git a/submitqueue/extension/changeprovider/github/provider_test.go b/submitqueue/extension/changeprovider/github/provider_test.go index 23fcb80e..43f72d00 100644 --- a/submitqueue/extension/changeprovider/github/provider_test.go +++ b/submitqueue/extension/changeprovider/github/provider_test.go @@ -12,8 +12,8 @@ import ( "github.com/uber-go/tally" "go.uber.org/zap/zaptest" - "github.com/uber/submitqueue/core/httpclient" - "github.com/uber/submitqueue/entity/change" + "github.com/uber/submitqueue/platform/base/change" + phttp "github.com/uber/submitqueue/platform/http" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/changeprovider" ) @@ -29,7 +29,7 @@ const ( func newTestProvider(t *testing.T, serverURL string) changeprovider.ChangeProvider { t.Helper() - client, err := httpclient.NewClient(serverURL) + client, err := phttp.NewClient(serverURL) require.NoError(t, err) return NewProvider(Params{ HTTPClient: client, diff --git a/submitqueue/extension/changeprovider/github/validate.go b/submitqueue/extension/changeprovider/github/validate.go index 666d711e..6c2adb19 100644 --- a/submitqueue/extension/changeprovider/github/validate.go +++ b/submitqueue/extension/changeprovider/github/validate.go @@ -3,7 +3,7 @@ package github import ( "fmt" - entitygithub "github.com/uber/submitqueue/entity/change/github" + entitygithub "github.com/uber/submitqueue/platform/base/change/github" ) // validateChangeConsistency validates that all changeIDs in the stack are consistent. diff --git a/submitqueue/extension/changeprovider/github/validate_test.go b/submitqueue/extension/changeprovider/github/validate_test.go index 7a02ef38..c1ca05e2 100644 --- a/submitqueue/extension/changeprovider/github/validate_test.go +++ b/submitqueue/extension/changeprovider/github/validate_test.go @@ -4,7 +4,7 @@ import ( "testing" "github.com/stretchr/testify/require" - entitygithub "github.com/uber/submitqueue/entity/change/github" + entitygithub "github.com/uber/submitqueue/platform/base/change/github" ) func TestValidateChangeConsistency(t *testing.T) { diff --git a/submitqueue/extension/mergechecker/fake/BUILD.bazel b/submitqueue/extension/mergechecker/fake/BUILD.bazel index f029d2cb..a6b8d6c9 100644 --- a/submitqueue/extension/mergechecker/fake/BUILD.bazel +++ b/submitqueue/extension/mergechecker/fake/BUILD.bazel @@ -17,7 +17,7 @@ go_test( srcs = ["fake_test.go"], embed = [":fake"], deps = [ - "//entity/change", + "//platform/base/change", "//submitqueue/entity", "//submitqueue/extension/mergechecker", "@com_github_stretchr_testify//assert", diff --git a/submitqueue/extension/mergechecker/fake/fake_test.go b/submitqueue/extension/mergechecker/fake/fake_test.go index ed9e56db..8bbbe465 100644 --- a/submitqueue/extension/mergechecker/fake/fake_test.go +++ b/submitqueue/extension/mergechecker/fake/fake_test.go @@ -20,7 +20,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/uber/submitqueue/entity/change" + "github.com/uber/submitqueue/platform/base/change" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/mergechecker" ) diff --git a/submitqueue/extension/mergechecker/github/BUILD.bazel b/submitqueue/extension/mergechecker/github/BUILD.bazel index bdaa40bf..c37e1d0f 100644 --- a/submitqueue/extension/mergechecker/github/BUILD.bazel +++ b/submitqueue/extension/mergechecker/github/BUILD.bazel @@ -10,8 +10,8 @@ go_library( importpath = "github.com/uber/submitqueue/submitqueue/extension/mergechecker/github", visibility = ["//visibility:public"], deps = [ - "//core/metrics", - "//entity/change/github", + "//platform/base/change/github", + "//platform/metrics", "//submitqueue/entity", "//submitqueue/extension/mergechecker", "@com_github_uber_go_tally//:tally", @@ -28,9 +28,9 @@ go_test( ], embed = [":github"], deps = [ - "//core/httpclient", - "//entity/change", - "//entity/change/github", + "//platform/base/change", + "//platform/base/change/github", + "//platform/http", "//submitqueue/entity", "//submitqueue/extension/mergechecker", "@com_github_stretchr_testify//assert", diff --git a/submitqueue/extension/mergechecker/github/checker.go b/submitqueue/extension/mergechecker/github/checker.go index a57411fc..1104893a 100644 --- a/submitqueue/extension/mergechecker/github/checker.go +++ b/submitqueue/extension/mergechecker/github/checker.go @@ -23,8 +23,8 @@ import ( "net/http" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/metrics" - entitygithub "github.com/uber/submitqueue/entity/change/github" + entitygithub "github.com/uber/submitqueue/platform/base/change/github" + "github.com/uber/submitqueue/platform/metrics" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/mergechecker" "go.uber.org/zap" diff --git a/submitqueue/extension/mergechecker/github/checker_test.go b/submitqueue/extension/mergechecker/github/checker_test.go index d2a96d10..263f162f 100644 --- a/submitqueue/extension/mergechecker/github/checker_test.go +++ b/submitqueue/extension/mergechecker/github/checker_test.go @@ -25,8 +25,8 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/httpclient" - "github.com/uber/submitqueue/entity/change" + "github.com/uber/submitqueue/platform/base/change" + phttp "github.com/uber/submitqueue/platform/http" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/mergechecker" "go.uber.org/zap/zaptest" @@ -34,7 +34,7 @@ import ( func newTestMergeChecker(t *testing.T, serverURL string) mergechecker.MergeChecker { t.Helper() - client, err := httpclient.NewClient(serverURL) + client, err := phttp.NewClient(serverURL) require.NoError(t, err) return NewMergeChecker(Params{ HTTPClient: client, diff --git a/submitqueue/extension/mergechecker/github/graphql.go b/submitqueue/extension/mergechecker/github/graphql.go index e0410a6e..1c33c806 100644 --- a/submitqueue/extension/mergechecker/github/graphql.go +++ b/submitqueue/extension/mergechecker/github/graphql.go @@ -19,7 +19,7 @@ import ( "fmt" "strings" - entitygithub "github.com/uber/submitqueue/entity/change/github" + entitygithub "github.com/uber/submitqueue/platform/base/change/github" ) // graphQLRequest is the request body for the GitHub GraphQL API. diff --git a/submitqueue/extension/mergechecker/github/graphql_test.go b/submitqueue/extension/mergechecker/github/graphql_test.go index 4b392a00..ecef12a2 100644 --- a/submitqueue/extension/mergechecker/github/graphql_test.go +++ b/submitqueue/extension/mergechecker/github/graphql_test.go @@ -20,7 +20,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - entitygithub "github.com/uber/submitqueue/entity/change/github" + entitygithub "github.com/uber/submitqueue/platform/base/change/github" ) func TestBuildGraphQLQuery(t *testing.T) { diff --git a/submitqueue/extension/mergechecker/github/validate.go b/submitqueue/extension/mergechecker/github/validate.go index d27a23df..a5163b76 100644 --- a/submitqueue/extension/mergechecker/github/validate.go +++ b/submitqueue/extension/mergechecker/github/validate.go @@ -17,7 +17,7 @@ package github import ( "fmt" - entitygithub "github.com/uber/submitqueue/entity/change/github" + entitygithub "github.com/uber/submitqueue/platform/base/change/github" ) // PRMergeableState represents the mergeability state of a pull request. diff --git a/submitqueue/extension/mergechecker/github/validate_test.go b/submitqueue/extension/mergechecker/github/validate_test.go index 3f22c062..efe62255 100644 --- a/submitqueue/extension/mergechecker/github/validate_test.go +++ b/submitqueue/extension/mergechecker/github/validate_test.go @@ -19,7 +19,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - entitygithub "github.com/uber/submitqueue/entity/change/github" + entitygithub "github.com/uber/submitqueue/platform/base/change/github" ) func TestValidatePRs(t *testing.T) { diff --git a/submitqueue/extension/pusher/fake/BUILD.bazel b/submitqueue/extension/pusher/fake/BUILD.bazel index 0cc43819..4795905d 100644 --- a/submitqueue/extension/pusher/fake/BUILD.bazel +++ b/submitqueue/extension/pusher/fake/BUILD.bazel @@ -6,7 +6,7 @@ go_library( importpath = "github.com/uber/submitqueue/submitqueue/extension/pusher/fake", visibility = ["//visibility:public"], deps = [ - "//entity/change", + "//platform/base/change", "//submitqueue/core/changeset", "//submitqueue/core/fakemarker", "//submitqueue/entity", @@ -19,7 +19,7 @@ go_test( srcs = ["fake_test.go"], embed = [":fake"], deps = [ - "//entity/change", + "//platform/base/change", "//submitqueue/core/changeset/fake", "//submitqueue/entity", "//submitqueue/extension/pusher", diff --git a/submitqueue/extension/pusher/fake/fake.go b/submitqueue/extension/pusher/fake/fake.go index 51841bb1..8c96e01b 100644 --- a/submitqueue/extension/pusher/fake/fake.go +++ b/submitqueue/extension/pusher/fake/fake.go @@ -32,7 +32,7 @@ import ( "fmt" "sync/atomic" - "github.com/uber/submitqueue/entity/change" + "github.com/uber/submitqueue/platform/base/change" "github.com/uber/submitqueue/submitqueue/core/changeset" "github.com/uber/submitqueue/submitqueue/core/fakemarker" "github.com/uber/submitqueue/submitqueue/entity" diff --git a/submitqueue/extension/pusher/fake/fake_test.go b/submitqueue/extension/pusher/fake/fake_test.go index 305a003d..9f57f88a 100644 --- a/submitqueue/extension/pusher/fake/fake_test.go +++ b/submitqueue/extension/pusher/fake/fake_test.go @@ -21,7 +21,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/uber/submitqueue/entity/change" + "github.com/uber/submitqueue/platform/base/change" changesetfake "github.com/uber/submitqueue/submitqueue/core/changeset/fake" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/pusher" diff --git a/submitqueue/extension/pusher/git/BUILD.bazel b/submitqueue/extension/pusher/git/BUILD.bazel index b26096d1..ec22415e 100644 --- a/submitqueue/extension/pusher/git/BUILD.bazel +++ b/submitqueue/extension/pusher/git/BUILD.bazel @@ -6,9 +6,9 @@ go_library( importpath = "github.com/uber/submitqueue/submitqueue/extension/pusher/git", visibility = ["//visibility:public"], deps = [ - "//core/metrics", - "//entity/change", - "//entity/change/github", + "//platform/base/change", + "//platform/base/change/github", + "//platform/metrics", "//submitqueue/core/changeset", "//submitqueue/entity", "//submitqueue/extension/pusher", @@ -22,7 +22,7 @@ go_test( srcs = ["git_pusher_test.go"], embed = [":git"], deps = [ - "//entity/change", + "//platform/base/change", "//submitqueue/core/changeset/fake", "//submitqueue/entity", "//submitqueue/extension/pusher", diff --git a/submitqueue/extension/pusher/git/git_pusher.go b/submitqueue/extension/pusher/git/git_pusher.go index 4616146b..a281b669 100644 --- a/submitqueue/extension/pusher/git/git_pusher.go +++ b/submitqueue/extension/pusher/git/git_pusher.go @@ -61,9 +61,9 @@ import ( "github.com/uber-go/tally" "go.uber.org/zap" - coremetrics "github.com/uber/submitqueue/core/metrics" - "github.com/uber/submitqueue/entity/change" - entitygithub "github.com/uber/submitqueue/entity/change/github" + "github.com/uber/submitqueue/platform/base/change" + entitygithub "github.com/uber/submitqueue/platform/base/change/github" + coremetrics "github.com/uber/submitqueue/platform/metrics" "github.com/uber/submitqueue/submitqueue/core/changeset" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/pusher" diff --git a/submitqueue/extension/pusher/git/git_pusher_test.go b/submitqueue/extension/pusher/git/git_pusher_test.go index 44003132..ca25a831 100644 --- a/submitqueue/extension/pusher/git/git_pusher_test.go +++ b/submitqueue/extension/pusher/git/git_pusher_test.go @@ -31,7 +31,7 @@ import ( "github.com/uber-go/tally" "go.uber.org/zap/zaptest" - "github.com/uber/submitqueue/entity/change" + "github.com/uber/submitqueue/platform/base/change" "github.com/uber/submitqueue/submitqueue/core/changeset/fake" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/pusher" diff --git a/submitqueue/extension/scorer/composite/BUILD.bazel b/submitqueue/extension/scorer/composite/BUILD.bazel index 1ae9d442..3eab398a 100644 --- a/submitqueue/extension/scorer/composite/BUILD.bazel +++ b/submitqueue/extension/scorer/composite/BUILD.bazel @@ -6,7 +6,7 @@ go_library( importpath = "github.com/uber/submitqueue/submitqueue/extension/scorer/composite", visibility = ["//visibility:public"], deps = [ - "//core/metrics", + "//platform/metrics", "//submitqueue/entity", "//submitqueue/extension/scorer", "@com_github_uber_go_tally//:tally", diff --git a/submitqueue/extension/scorer/composite/scorer.go b/submitqueue/extension/scorer/composite/scorer.go index 8d90c832..ed342c4d 100644 --- a/submitqueue/extension/scorer/composite/scorer.go +++ b/submitqueue/extension/scorer/composite/scorer.go @@ -18,7 +18,7 @@ import ( "context" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/metrics" + "github.com/uber/submitqueue/platform/metrics" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/scorer" ) diff --git a/submitqueue/extension/scorer/heuristic/BUILD.bazel b/submitqueue/extension/scorer/heuristic/BUILD.bazel index 3f45785e..f0b3efb2 100644 --- a/submitqueue/extension/scorer/heuristic/BUILD.bazel +++ b/submitqueue/extension/scorer/heuristic/BUILD.bazel @@ -6,7 +6,7 @@ go_library( importpath = "github.com/uber/submitqueue/submitqueue/extension/scorer/heuristic", visibility = ["//visibility:public"], deps = [ - "//core/metrics", + "//platform/metrics", "//submitqueue/core/changeset", "//submitqueue/entity", "//submitqueue/extension/scorer", diff --git a/submitqueue/extension/scorer/heuristic/scorer.go b/submitqueue/extension/scorer/heuristic/scorer.go index ac20d559..e37e2d4b 100644 --- a/submitqueue/extension/scorer/heuristic/scorer.go +++ b/submitqueue/extension/scorer/heuristic/scorer.go @@ -19,7 +19,7 @@ import ( "fmt" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/metrics" + "github.com/uber/submitqueue/platform/metrics" "github.com/uber/submitqueue/submitqueue/core/changeset" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/scorer" diff --git a/submitqueue/extension/storage/mysql/BUILD.bazel b/submitqueue/extension/storage/mysql/BUILD.bazel index 25fefdc5..c78d27f0 100644 --- a/submitqueue/extension/storage/mysql/BUILD.bazel +++ b/submitqueue/extension/storage/mysql/BUILD.bazel @@ -15,7 +15,7 @@ go_library( importpath = "github.com/uber/submitqueue/submitqueue/extension/storage/mysql", visibility = ["//visibility:public"], deps = [ - "//core/metrics", + "//platform/metrics", "//submitqueue/entity", "//submitqueue/extension/storage", "@com_github_go_sql_driver_mysql//:mysql", diff --git a/submitqueue/extension/storage/mysql/batch_dependent_store.go b/submitqueue/extension/storage/mysql/batch_dependent_store.go index 47f8c5f8..7bf8047d 100644 --- a/submitqueue/extension/storage/mysql/batch_dependent_store.go +++ b/submitqueue/extension/storage/mysql/batch_dependent_store.go @@ -24,7 +24,7 @@ import ( "github.com/go-sql-driver/mysql" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/metrics" + "github.com/uber/submitqueue/platform/metrics" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/storage" ) diff --git a/submitqueue/extension/storage/mysql/batch_store.go b/submitqueue/extension/storage/mysql/batch_store.go index e6999aac..4f0168ee 100644 --- a/submitqueue/extension/storage/mysql/batch_store.go +++ b/submitqueue/extension/storage/mysql/batch_store.go @@ -25,7 +25,7 @@ import ( "github.com/go-sql-driver/mysql" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/metrics" + "github.com/uber/submitqueue/platform/metrics" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/storage" ) diff --git a/submitqueue/extension/storage/mysql/build_store.go b/submitqueue/extension/storage/mysql/build_store.go index 1823592d..d04eae53 100644 --- a/submitqueue/extension/storage/mysql/build_store.go +++ b/submitqueue/extension/storage/mysql/build_store.go @@ -24,7 +24,7 @@ import ( "github.com/go-sql-driver/mysql" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/metrics" + "github.com/uber/submitqueue/platform/metrics" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/storage" ) diff --git a/submitqueue/extension/storage/mysql/change_store.go b/submitqueue/extension/storage/mysql/change_store.go index ca37ac4e..436b8b20 100644 --- a/submitqueue/extension/storage/mysql/change_store.go +++ b/submitqueue/extension/storage/mysql/change_store.go @@ -22,7 +22,7 @@ import ( "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/metrics" + "github.com/uber/submitqueue/platform/metrics" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/storage" ) diff --git a/submitqueue/extension/storage/mysql/request_log_store.go b/submitqueue/extension/storage/mysql/request_log_store.go index 3657fa9a..b19b2119 100644 --- a/submitqueue/extension/storage/mysql/request_log_store.go +++ b/submitqueue/extension/storage/mysql/request_log_store.go @@ -23,7 +23,7 @@ import ( "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/metrics" + "github.com/uber/submitqueue/platform/metrics" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/storage" ) diff --git a/submitqueue/extension/storage/mysql/request_store.go b/submitqueue/extension/storage/mysql/request_store.go index a7c746d6..d332498d 100644 --- a/submitqueue/extension/storage/mysql/request_store.go +++ b/submitqueue/extension/storage/mysql/request_store.go @@ -24,7 +24,7 @@ import ( "github.com/go-sql-driver/mysql" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/metrics" + "github.com/uber/submitqueue/platform/metrics" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/storage" ) diff --git a/submitqueue/extension/storage/mysql/speculation_tree_store.go b/submitqueue/extension/storage/mysql/speculation_tree_store.go index 2366dadc..564cd778 100644 --- a/submitqueue/extension/storage/mysql/speculation_tree_store.go +++ b/submitqueue/extension/storage/mysql/speculation_tree_store.go @@ -24,7 +24,7 @@ import ( "github.com/go-sql-driver/mysql" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/metrics" + "github.com/uber/submitqueue/platform/metrics" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/storage" ) diff --git a/submitqueue/gateway/controller/BUILD.bazel b/submitqueue/gateway/controller/BUILD.bazel index 72f0f163..d203bfa8 100644 --- a/submitqueue/gateway/controller/BUILD.bazel +++ b/submitqueue/gateway/controller/BUILD.bazel @@ -11,13 +11,13 @@ go_library( importpath = "github.com/uber/submitqueue/submitqueue/gateway/controller", visibility = ["//visibility:public"], deps = [ - "//core/consumer", - "//core/errs", - "//core/metrics", - "//entity/change", - "//entity/mergestrategy", - "//entity/messagequeue", - "//extension/counter", + "//platform/base/change", + "//platform/base/mergestrategy", + "//platform/base/messagequeue", + "//platform/consumer", + "//platform/errs", + "//platform/extension/counter", + "//platform/metrics", "//submitqueue/core/request", "//submitqueue/core/topickey", "//submitqueue/entity", @@ -39,12 +39,12 @@ go_test( ], embed = [":controller"], deps = [ - "//core/consumer", - "//core/errs", - "//entity/mergestrategy", - "//entity/messagequeue", - "//extension/counter/mock", - "//extension/messagequeue/mock", + "//platform/base/mergestrategy", + "//platform/base/messagequeue", + "//platform/consumer", + "//platform/errs", + "//platform/extension/counter/mock", + "//platform/extension/messagequeue/mock", "//submitqueue/core/topickey", "//submitqueue/entity", "//submitqueue/extension/queueconfig", diff --git a/submitqueue/gateway/controller/cancel.go b/submitqueue/gateway/controller/cancel.go index 54d197e5..cbada3f1 100644 --- a/submitqueue/gateway/controller/cancel.go +++ b/submitqueue/gateway/controller/cancel.go @@ -20,9 +20,9 @@ import ( "time" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/consumer" - "github.com/uber/submitqueue/core/errs" - entityqueue "github.com/uber/submitqueue/entity/messagequeue" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" + "github.com/uber/submitqueue/platform/consumer" + "github.com/uber/submitqueue/platform/errs" "github.com/uber/submitqueue/submitqueue/core/topickey" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/storage" diff --git a/submitqueue/gateway/controller/cancel_test.go b/submitqueue/gateway/controller/cancel_test.go index 27d2f160..4be69766 100644 --- a/submitqueue/gateway/controller/cancel_test.go +++ b/submitqueue/gateway/controller/cancel_test.go @@ -22,10 +22,10 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/consumer" - "github.com/uber/submitqueue/core/errs" - entityqueue "github.com/uber/submitqueue/entity/messagequeue" - queuemock "github.com/uber/submitqueue/extension/messagequeue/mock" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" + "github.com/uber/submitqueue/platform/consumer" + "github.com/uber/submitqueue/platform/errs" + queuemock "github.com/uber/submitqueue/platform/extension/messagequeue/mock" "github.com/uber/submitqueue/submitqueue/core/topickey" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/storage" diff --git a/submitqueue/gateway/controller/land.go b/submitqueue/gateway/controller/land.go index 80879445..e85d6392 100644 --- a/submitqueue/gateway/controller/land.go +++ b/submitqueue/gateway/controller/land.go @@ -20,13 +20,13 @@ import ( "fmt" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/consumer" - "github.com/uber/submitqueue/core/errs" - "github.com/uber/submitqueue/core/metrics" - "github.com/uber/submitqueue/entity/change" - "github.com/uber/submitqueue/entity/mergestrategy" - entityqueue "github.com/uber/submitqueue/entity/messagequeue" - "github.com/uber/submitqueue/extension/counter" + "github.com/uber/submitqueue/platform/base/change" + "github.com/uber/submitqueue/platform/base/mergestrategy" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" + "github.com/uber/submitqueue/platform/consumer" + "github.com/uber/submitqueue/platform/errs" + "github.com/uber/submitqueue/platform/extension/counter" + "github.com/uber/submitqueue/platform/metrics" "github.com/uber/submitqueue/submitqueue/core/topickey" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/queueconfig" diff --git a/submitqueue/gateway/controller/land_test.go b/submitqueue/gateway/controller/land_test.go index 0678742d..8a027f34 100644 --- a/submitqueue/gateway/controller/land_test.go +++ b/submitqueue/gateway/controller/land_test.go @@ -22,12 +22,12 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/consumer" - "github.com/uber/submitqueue/core/errs" - "github.com/uber/submitqueue/entity/mergestrategy" - 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/platform/base/mergestrategy" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" + "github.com/uber/submitqueue/platform/consumer" + "github.com/uber/submitqueue/platform/errs" + countermock "github.com/uber/submitqueue/platform/extension/counter/mock" + queuemock "github.com/uber/submitqueue/platform/extension/messagequeue/mock" "github.com/uber/submitqueue/submitqueue/core/topickey" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/queueconfig" diff --git a/submitqueue/gateway/controller/log/BUILD.bazel b/submitqueue/gateway/controller/log/BUILD.bazel index 32654283..b323d30d 100644 --- a/submitqueue/gateway/controller/log/BUILD.bazel +++ b/submitqueue/gateway/controller/log/BUILD.bazel @@ -6,8 +6,8 @@ go_library( importpath = "github.com/uber/submitqueue/submitqueue/gateway/controller/log", visibility = ["//visibility:public"], deps = [ - "//core/consumer", - "//core/metrics", + "//platform/consumer", + "//platform/metrics", "//submitqueue/entity", "//submitqueue/extension/storage", "@com_github_uber_go_tally//:tally", @@ -20,8 +20,8 @@ go_test( srcs = ["log_test.go"], embed = [":log"], deps = [ - "//entity/messagequeue", - "//extension/messagequeue/mock", + "//platform/base/messagequeue", + "//platform/extension/messagequeue/mock", "//submitqueue/core/topickey", "//submitqueue/entity", "//submitqueue/extension/storage/mock", diff --git a/submitqueue/gateway/controller/log/log.go b/submitqueue/gateway/controller/log/log.go index 4af2a8c1..d28811c7 100644 --- a/submitqueue/gateway/controller/log/log.go +++ b/submitqueue/gateway/controller/log/log.go @@ -19,8 +19,8 @@ import ( "fmt" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/consumer" - "github.com/uber/submitqueue/core/metrics" + "github.com/uber/submitqueue/platform/consumer" + "github.com/uber/submitqueue/platform/metrics" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/storage" "go.uber.org/zap" diff --git a/submitqueue/gateway/controller/log/log_test.go b/submitqueue/gateway/controller/log/log_test.go index 28cec240..166352bb 100644 --- a/submitqueue/gateway/controller/log/log_test.go +++ b/submitqueue/gateway/controller/log/log_test.go @@ -21,8 +21,8 @@ import ( "github.com/stretchr/testify/require" "github.com/uber-go/tally" - entityqueue "github.com/uber/submitqueue/entity/messagequeue" - queuemock "github.com/uber/submitqueue/extension/messagequeue/mock" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" + queuemock "github.com/uber/submitqueue/platform/extension/messagequeue/mock" "github.com/uber/submitqueue/submitqueue/core/topickey" "github.com/uber/submitqueue/submitqueue/entity" storagemock "github.com/uber/submitqueue/submitqueue/extension/storage/mock" diff --git a/submitqueue/gateway/controller/status.go b/submitqueue/gateway/controller/status.go index 95f31da5..14570dc2 100644 --- a/submitqueue/gateway/controller/status.go +++ b/submitqueue/gateway/controller/status.go @@ -21,7 +21,7 @@ import ( "time" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/errs" + "github.com/uber/submitqueue/platform/errs" "github.com/uber/submitqueue/submitqueue/core/request" "github.com/uber/submitqueue/submitqueue/extension/storage" pb "github.com/uber/submitqueue/submitqueue/gateway/protopb" diff --git a/submitqueue/gateway/controller/status_test.go b/submitqueue/gateway/controller/status_test.go index 5f6ea149..90b9660a 100644 --- a/submitqueue/gateway/controller/status_test.go +++ b/submitqueue/gateway/controller/status_test.go @@ -22,7 +22,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/errs" + "github.com/uber/submitqueue/platform/errs" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/storage" storagemock "github.com/uber/submitqueue/submitqueue/extension/storage/mock" diff --git a/submitqueue/orchestrator/controller/BUILD.bazel b/submitqueue/orchestrator/controller/BUILD.bazel index ac66f324..91c3d316 100644 --- a/submitqueue/orchestrator/controller/BUILD.bazel +++ b/submitqueue/orchestrator/controller/BUILD.bazel @@ -6,7 +6,7 @@ go_library( importpath = "github.com/uber/submitqueue/submitqueue/orchestrator/controller", visibility = ["//visibility:public"], deps = [ - "//core/metrics", + "//platform/metrics", "//submitqueue/orchestrator/protopb", "@com_github_uber_go_tally//:tally", "@org_uber_go_zap//:zap", diff --git a/submitqueue/orchestrator/controller/batch/BUILD.bazel b/submitqueue/orchestrator/controller/batch/BUILD.bazel index 72a89398..d5920ef0 100644 --- a/submitqueue/orchestrator/controller/batch/BUILD.bazel +++ b/submitqueue/orchestrator/controller/batch/BUILD.bazel @@ -6,10 +6,10 @@ go_library( importpath = "github.com/uber/submitqueue/submitqueue/orchestrator/controller/batch", visibility = ["//visibility:public"], deps = [ - "//core/consumer", - "//core/metrics", - "//entity/messagequeue", - "//extension/counter", + "//platform/base/messagequeue", + "//platform/consumer", + "//platform/extension/counter", + "//platform/metrics", "//submitqueue/core/topickey", "//submitqueue/entity", "//submitqueue/extension/conflict", @@ -24,12 +24,12 @@ go_test( srcs = ["batch_test.go"], embed = [":batch"], deps = [ - "//core/consumer", - "//entity/change", - "//entity/mergestrategy", - "//entity/messagequeue", - "//extension/counter/mock", - "//extension/messagequeue/mock", + "//platform/base/change", + "//platform/base/mergestrategy", + "//platform/base/messagequeue", + "//platform/consumer", + "//platform/extension/counter/mock", + "//platform/extension/messagequeue/mock", "//submitqueue/core/topickey", "//submitqueue/entity", "//submitqueue/extension/conflict", diff --git a/submitqueue/orchestrator/controller/batch/batch.go b/submitqueue/orchestrator/controller/batch/batch.go index fef116fd..0af0d68c 100644 --- a/submitqueue/orchestrator/controller/batch/batch.go +++ b/submitqueue/orchestrator/controller/batch/batch.go @@ -20,10 +20,10 @@ import ( "fmt" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/consumer" - "github.com/uber/submitqueue/core/metrics" - entityqueue "github.com/uber/submitqueue/entity/messagequeue" - "github.com/uber/submitqueue/extension/counter" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" + "github.com/uber/submitqueue/platform/consumer" + "github.com/uber/submitqueue/platform/extension/counter" + "github.com/uber/submitqueue/platform/metrics" "github.com/uber/submitqueue/submitqueue/core/topickey" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/conflict" diff --git a/submitqueue/orchestrator/controller/batch/batch_test.go b/submitqueue/orchestrator/controller/batch/batch_test.go index 792c9773..2b0573a4 100644 --- a/submitqueue/orchestrator/controller/batch/batch_test.go +++ b/submitqueue/orchestrator/controller/batch/batch_test.go @@ -24,12 +24,12 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/consumer" - "github.com/uber/submitqueue/entity/change" - "github.com/uber/submitqueue/entity/mergestrategy" - 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/platform/base/change" + "github.com/uber/submitqueue/platform/base/mergestrategy" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" + "github.com/uber/submitqueue/platform/consumer" + countermock "github.com/uber/submitqueue/platform/extension/counter/mock" + queuemock "github.com/uber/submitqueue/platform/extension/messagequeue/mock" "github.com/uber/submitqueue/submitqueue/core/topickey" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/conflict" diff --git a/submitqueue/orchestrator/controller/build/BUILD.bazel b/submitqueue/orchestrator/controller/build/BUILD.bazel index 3bafe706..f7b237bb 100644 --- a/submitqueue/orchestrator/controller/build/BUILD.bazel +++ b/submitqueue/orchestrator/controller/build/BUILD.bazel @@ -6,9 +6,9 @@ go_library( importpath = "github.com/uber/submitqueue/submitqueue/orchestrator/controller/build", visibility = ["//visibility:public"], deps = [ - "//core/consumer", - "//core/metrics", - "//entity/messagequeue", + "//platform/base/messagequeue", + "//platform/consumer", + "//platform/metrics", "//submitqueue/core/topickey", "//submitqueue/entity", "//submitqueue/extension/buildrunner", @@ -23,10 +23,10 @@ go_test( srcs = ["build_test.go"], embed = [":build"], deps = [ - "//core/consumer", - "//core/errs", - "//entity/messagequeue", - "//extension/messagequeue/mock", + "//platform/base/messagequeue", + "//platform/consumer", + "//platform/errs", + "//platform/extension/messagequeue/mock", "//submitqueue/core/changeset/fake", "//submitqueue/core/topickey", "//submitqueue/entity", diff --git a/submitqueue/orchestrator/controller/build/build.go b/submitqueue/orchestrator/controller/build/build.go index dd07e539..6edbe3f5 100644 --- a/submitqueue/orchestrator/controller/build/build.go +++ b/submitqueue/orchestrator/controller/build/build.go @@ -20,9 +20,9 @@ import ( "fmt" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/consumer" - "github.com/uber/submitqueue/core/metrics" - entityqueue "github.com/uber/submitqueue/entity/messagequeue" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" + "github.com/uber/submitqueue/platform/consumer" + "github.com/uber/submitqueue/platform/metrics" "github.com/uber/submitqueue/submitqueue/core/topickey" "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 ea76eddc..4b04c89b 100644 --- a/submitqueue/orchestrator/controller/build/build_test.go +++ b/submitqueue/orchestrator/controller/build/build_test.go @@ -22,10 +22,10 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/consumer" - "github.com/uber/submitqueue/core/errs" - entityqueue "github.com/uber/submitqueue/entity/messagequeue" - queuemock "github.com/uber/submitqueue/extension/messagequeue/mock" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" + "github.com/uber/submitqueue/platform/consumer" + "github.com/uber/submitqueue/platform/errs" + queuemock "github.com/uber/submitqueue/platform/extension/messagequeue/mock" changesetfake "github.com/uber/submitqueue/submitqueue/core/changeset/fake" "github.com/uber/submitqueue/submitqueue/core/topickey" "github.com/uber/submitqueue/submitqueue/entity" diff --git a/submitqueue/orchestrator/controller/buildsignal/BUILD.bazel b/submitqueue/orchestrator/controller/buildsignal/BUILD.bazel index 7cf7775b..6d421038 100644 --- a/submitqueue/orchestrator/controller/buildsignal/BUILD.bazel +++ b/submitqueue/orchestrator/controller/buildsignal/BUILD.bazel @@ -6,10 +6,10 @@ go_library( importpath = "github.com/uber/submitqueue/submitqueue/orchestrator/controller/buildsignal", visibility = ["//visibility:public"], deps = [ - "//core/consumer", - "//core/errs", - "//core/metrics", - "//entity/messagequeue", + "//platform/base/messagequeue", + "//platform/consumer", + "//platform/errs", + "//platform/metrics", "//submitqueue/core/topickey", "//submitqueue/entity", "//submitqueue/extension/buildrunner", @@ -24,10 +24,10 @@ go_test( srcs = ["buildsignal_test.go"], embed = [":buildsignal"], deps = [ - "//core/consumer", - "//core/errs", - "//entity/messagequeue", - "//extension/messagequeue/mock", + "//platform/base/messagequeue", + "//platform/consumer", + "//platform/errs", + "//platform/extension/messagequeue/mock", "//submitqueue/core/topickey", "//submitqueue/entity", "//submitqueue/extension/buildrunner/mock", diff --git a/submitqueue/orchestrator/controller/buildsignal/buildsignal.go b/submitqueue/orchestrator/controller/buildsignal/buildsignal.go index 4e1907fb..e96a897c 100644 --- a/submitqueue/orchestrator/controller/buildsignal/buildsignal.go +++ b/submitqueue/orchestrator/controller/buildsignal/buildsignal.go @@ -27,10 +27,10 @@ import ( "fmt" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/consumer" - "github.com/uber/submitqueue/core/errs" - "github.com/uber/submitqueue/core/metrics" - entityqueue "github.com/uber/submitqueue/entity/messagequeue" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" + "github.com/uber/submitqueue/platform/consumer" + "github.com/uber/submitqueue/platform/errs" + "github.com/uber/submitqueue/platform/metrics" "github.com/uber/submitqueue/submitqueue/core/topickey" "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 ede2d629..4daa13cf 100644 --- a/submitqueue/orchestrator/controller/buildsignal/buildsignal_test.go +++ b/submitqueue/orchestrator/controller/buildsignal/buildsignal_test.go @@ -22,10 +22,10 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/consumer" - "github.com/uber/submitqueue/core/errs" - entityqueue "github.com/uber/submitqueue/entity/messagequeue" - queuemock "github.com/uber/submitqueue/extension/messagequeue/mock" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" + "github.com/uber/submitqueue/platform/consumer" + "github.com/uber/submitqueue/platform/errs" + queuemock "github.com/uber/submitqueue/platform/extension/messagequeue/mock" "github.com/uber/submitqueue/submitqueue/core/topickey" "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 466799f2..6070d5b9 100644 --- a/submitqueue/orchestrator/controller/cancel/BUILD.bazel +++ b/submitqueue/orchestrator/controller/cancel/BUILD.bazel @@ -6,8 +6,8 @@ go_library( importpath = "github.com/uber/submitqueue/submitqueue/orchestrator/controller/cancel", visibility = ["//visibility:public"], deps = [ - "//core/consumer", - "//entity/messagequeue", + "//platform/base/messagequeue", + "//platform/consumer", "//submitqueue/core/request", "//submitqueue/core/topickey", "//submitqueue/entity", @@ -22,9 +22,9 @@ go_test( srcs = ["cancel_test.go"], embed = [":cancel"], deps = [ - "//core/consumer", - "//entity/messagequeue", - "//extension/messagequeue/mock", + "//platform/base/messagequeue", + "//platform/consumer", + "//platform/extension/messagequeue/mock", "//submitqueue/core/topickey", "//submitqueue/entity", "//submitqueue/extension/storage", diff --git a/submitqueue/orchestrator/controller/cancel/cancel.go b/submitqueue/orchestrator/controller/cancel/cancel.go index 96a214ea..47ac883e 100644 --- a/submitqueue/orchestrator/controller/cancel/cancel.go +++ b/submitqueue/orchestrator/controller/cancel/cancel.go @@ -59,8 +59,8 @@ import ( "fmt" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/consumer" - entityqueue "github.com/uber/submitqueue/entity/messagequeue" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" + "github.com/uber/submitqueue/platform/consumer" corerequest "github.com/uber/submitqueue/submitqueue/core/request" "github.com/uber/submitqueue/submitqueue/core/topickey" "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 a97079fb..b625c949 100644 --- a/submitqueue/orchestrator/controller/cancel/cancel_test.go +++ b/submitqueue/orchestrator/controller/cancel/cancel_test.go @@ -22,9 +22,9 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/consumer" - entityqueue "github.com/uber/submitqueue/entity/messagequeue" - queuemock "github.com/uber/submitqueue/extension/messagequeue/mock" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" + "github.com/uber/submitqueue/platform/consumer" + queuemock "github.com/uber/submitqueue/platform/extension/messagequeue/mock" "github.com/uber/submitqueue/submitqueue/core/topickey" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/storage" diff --git a/submitqueue/orchestrator/controller/conclude/BUILD.bazel b/submitqueue/orchestrator/controller/conclude/BUILD.bazel index 75fe5afb..d885ff7c 100644 --- a/submitqueue/orchestrator/controller/conclude/BUILD.bazel +++ b/submitqueue/orchestrator/controller/conclude/BUILD.bazel @@ -6,8 +6,8 @@ go_library( importpath = "github.com/uber/submitqueue/submitqueue/orchestrator/controller/conclude", visibility = ["//visibility:public"], deps = [ - "//core/consumer", - "//core/metrics", + "//platform/consumer", + "//platform/metrics", "//submitqueue/core/request", "//submitqueue/entity", "//submitqueue/extension/storage", @@ -21,10 +21,10 @@ go_test( srcs = ["conclude_test.go"], embed = [":conclude"], deps = [ - "//core/consumer", - "//core/errs", - "//entity/messagequeue", - "//extension/messagequeue/mock", + "//platform/base/messagequeue", + "//platform/consumer", + "//platform/errs", + "//platform/extension/messagequeue/mock", "//submitqueue/core/topickey", "//submitqueue/entity", "//submitqueue/extension/storage", diff --git a/submitqueue/orchestrator/controller/conclude/conclude.go b/submitqueue/orchestrator/controller/conclude/conclude.go index 1c9e7a72..4f7ed3ae 100644 --- a/submitqueue/orchestrator/controller/conclude/conclude.go +++ b/submitqueue/orchestrator/controller/conclude/conclude.go @@ -19,8 +19,8 @@ import ( "fmt" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/consumer" - "github.com/uber/submitqueue/core/metrics" + "github.com/uber/submitqueue/platform/consumer" + "github.com/uber/submitqueue/platform/metrics" corerequest "github.com/uber/submitqueue/submitqueue/core/request" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/storage" diff --git a/submitqueue/orchestrator/controller/conclude/conclude_test.go b/submitqueue/orchestrator/controller/conclude/conclude_test.go index ff47f535..461f8b5d 100644 --- a/submitqueue/orchestrator/controller/conclude/conclude_test.go +++ b/submitqueue/orchestrator/controller/conclude/conclude_test.go @@ -22,10 +22,10 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/consumer" - "github.com/uber/submitqueue/core/errs" - entityqueue "github.com/uber/submitqueue/entity/messagequeue" - queuemock "github.com/uber/submitqueue/extension/messagequeue/mock" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" + "github.com/uber/submitqueue/platform/consumer" + "github.com/uber/submitqueue/platform/errs" + queuemock "github.com/uber/submitqueue/platform/extension/messagequeue/mock" "github.com/uber/submitqueue/submitqueue/core/topickey" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/storage" diff --git a/submitqueue/orchestrator/controller/dlq/BUILD.bazel b/submitqueue/orchestrator/controller/dlq/BUILD.bazel index f38da3af..2e2626f5 100644 --- a/submitqueue/orchestrator/controller/dlq/BUILD.bazel +++ b/submitqueue/orchestrator/controller/dlq/BUILD.bazel @@ -12,8 +12,8 @@ go_library( importpath = "github.com/uber/submitqueue/submitqueue/orchestrator/controller/dlq", visibility = ["//visibility:public"], deps = [ - "//core/consumer", - "//core/metrics", + "//platform/consumer", + "//platform/metrics", "//submitqueue/entity", "//submitqueue/extension/storage", "@com_github_uber_go_tally//:tally", @@ -32,10 +32,10 @@ go_test( ], embed = [":dlq"], deps = [ - "//core/consumer", - "//core/errs", - "//entity/messagequeue", - "//extension/messagequeue/mock", + "//platform/base/messagequeue", + "//platform/consumer", + "//platform/errs", + "//platform/extension/messagequeue/mock", "//submitqueue/core/topickey", "//submitqueue/entity", "//submitqueue/extension/storage", diff --git a/submitqueue/orchestrator/controller/dlq/batch.go b/submitqueue/orchestrator/controller/dlq/batch.go index 4d0a3f73..1d69366a 100644 --- a/submitqueue/orchestrator/controller/dlq/batch.go +++ b/submitqueue/orchestrator/controller/dlq/batch.go @@ -19,8 +19,8 @@ import ( "fmt" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/consumer" - "github.com/uber/submitqueue/core/metrics" + "github.com/uber/submitqueue/platform/consumer" + "github.com/uber/submitqueue/platform/metrics" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/storage" "go.uber.org/zap" diff --git a/submitqueue/orchestrator/controller/dlq/batch_test.go b/submitqueue/orchestrator/controller/dlq/batch_test.go index db55ed6f..69c8e317 100644 --- a/submitqueue/orchestrator/controller/dlq/batch_test.go +++ b/submitqueue/orchestrator/controller/dlq/batch_test.go @@ -20,7 +20,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/uber/submitqueue/core/consumer" + "github.com/uber/submitqueue/platform/consumer" "github.com/uber/submitqueue/submitqueue/core/topickey" "github.com/uber/submitqueue/submitqueue/entity" storagemock "github.com/uber/submitqueue/submitqueue/extension/storage/mock" diff --git a/submitqueue/orchestrator/controller/dlq/buildsignal.go b/submitqueue/orchestrator/controller/dlq/buildsignal.go index efbd2fde..64ec4600 100644 --- a/submitqueue/orchestrator/controller/dlq/buildsignal.go +++ b/submitqueue/orchestrator/controller/dlq/buildsignal.go @@ -20,8 +20,8 @@ import ( "fmt" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/consumer" - "github.com/uber/submitqueue/core/metrics" + "github.com/uber/submitqueue/platform/consumer" + "github.com/uber/submitqueue/platform/metrics" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/storage" "go.uber.org/zap" diff --git a/submitqueue/orchestrator/controller/dlq/buildsignal_test.go b/submitqueue/orchestrator/controller/dlq/buildsignal_test.go index 329f35b5..603e58ea 100644 --- a/submitqueue/orchestrator/controller/dlq/buildsignal_test.go +++ b/submitqueue/orchestrator/controller/dlq/buildsignal_test.go @@ -20,7 +20,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/uber/submitqueue/core/consumer" + "github.com/uber/submitqueue/platform/consumer" "github.com/uber/submitqueue/submitqueue/core/topickey" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/storage" diff --git a/submitqueue/orchestrator/controller/dlq/dlq.go b/submitqueue/orchestrator/controller/dlq/dlq.go index 77570ca4..f284696e 100644 --- a/submitqueue/orchestrator/controller/dlq/dlq.go +++ b/submitqueue/orchestrator/controller/dlq/dlq.go @@ -38,7 +38,7 @@ import ( "errors" "fmt" - "github.com/uber/submitqueue/core/consumer" + "github.com/uber/submitqueue/platform/consumer" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/storage" "go.uber.org/zap" diff --git a/submitqueue/orchestrator/controller/dlq/dlq_test.go b/submitqueue/orchestrator/controller/dlq/dlq_test.go index 4ace4fe4..77600c50 100644 --- a/submitqueue/orchestrator/controller/dlq/dlq_test.go +++ b/submitqueue/orchestrator/controller/dlq/dlq_test.go @@ -22,7 +22,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/errs" + "github.com/uber/submitqueue/platform/errs" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/storage" storagemock "github.com/uber/submitqueue/submitqueue/extension/storage/mock" diff --git a/submitqueue/orchestrator/controller/dlq/log.go b/submitqueue/orchestrator/controller/dlq/log.go index 74983a35..11ecd148 100644 --- a/submitqueue/orchestrator/controller/dlq/log.go +++ b/submitqueue/orchestrator/controller/dlq/log.go @@ -18,8 +18,8 @@ import ( "context" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/consumer" - "github.com/uber/submitqueue/core/metrics" + "github.com/uber/submitqueue/platform/consumer" + "github.com/uber/submitqueue/platform/metrics" "go.uber.org/zap" ) diff --git a/submitqueue/orchestrator/controller/dlq/log_test.go b/submitqueue/orchestrator/controller/dlq/log_test.go index 072b069c..83cc2218 100644 --- a/submitqueue/orchestrator/controller/dlq/log_test.go +++ b/submitqueue/orchestrator/controller/dlq/log_test.go @@ -20,7 +20,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/uber/submitqueue/core/consumer" + "github.com/uber/submitqueue/platform/consumer" "github.com/uber/submitqueue/submitqueue/core/topickey" "go.uber.org/mock/gomock" "go.uber.org/zap/zaptest" diff --git a/submitqueue/orchestrator/controller/dlq/request.go b/submitqueue/orchestrator/controller/dlq/request.go index cf96064a..a5b728a8 100644 --- a/submitqueue/orchestrator/controller/dlq/request.go +++ b/submitqueue/orchestrator/controller/dlq/request.go @@ -19,8 +19,8 @@ import ( "fmt" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/consumer" - "github.com/uber/submitqueue/core/metrics" + "github.com/uber/submitqueue/platform/consumer" + "github.com/uber/submitqueue/platform/metrics" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/storage" "go.uber.org/zap" diff --git a/submitqueue/orchestrator/controller/dlq/request_test.go b/submitqueue/orchestrator/controller/dlq/request_test.go index 1786afa9..4dcfc1b8 100644 --- a/submitqueue/orchestrator/controller/dlq/request_test.go +++ b/submitqueue/orchestrator/controller/dlq/request_test.go @@ -20,9 +20,9 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/uber/submitqueue/core/consumer" - queue "github.com/uber/submitqueue/entity/messagequeue" - queuemock "github.com/uber/submitqueue/extension/messagequeue/mock" + queue "github.com/uber/submitqueue/platform/base/messagequeue" + "github.com/uber/submitqueue/platform/consumer" + queuemock "github.com/uber/submitqueue/platform/extension/messagequeue/mock" "github.com/uber/submitqueue/submitqueue/core/topickey" "github.com/uber/submitqueue/submitqueue/entity" storagemock "github.com/uber/submitqueue/submitqueue/extension/storage/mock" diff --git a/submitqueue/orchestrator/controller/merge/BUILD.bazel b/submitqueue/orchestrator/controller/merge/BUILD.bazel index cd74e742..f6dd9146 100644 --- a/submitqueue/orchestrator/controller/merge/BUILD.bazel +++ b/submitqueue/orchestrator/controller/merge/BUILD.bazel @@ -6,9 +6,9 @@ go_library( importpath = "github.com/uber/submitqueue/submitqueue/orchestrator/controller/merge", visibility = ["//visibility:public"], deps = [ - "//core/consumer", - "//core/metrics", - "//entity/messagequeue", + "//platform/base/messagequeue", + "//platform/consumer", + "//platform/metrics", "//submitqueue/core/topickey", "//submitqueue/entity", "//submitqueue/extension/pusher", @@ -23,11 +23,11 @@ go_test( srcs = ["merge_test.go"], embed = [":merge"], deps = [ - "//core/consumer", - "//core/errs", - "//entity/change", - "//entity/messagequeue", - "//extension/messagequeue/mock", + "//platform/base/change", + "//platform/base/messagequeue", + "//platform/consumer", + "//platform/errs", + "//platform/extension/messagequeue/mock", "//submitqueue/core/topickey", "//submitqueue/entity", "//submitqueue/extension/pusher", diff --git a/submitqueue/orchestrator/controller/merge/merge.go b/submitqueue/orchestrator/controller/merge/merge.go index 72607ec6..b814fda0 100644 --- a/submitqueue/orchestrator/controller/merge/merge.go +++ b/submitqueue/orchestrator/controller/merge/merge.go @@ -22,9 +22,9 @@ import ( "github.com/uber-go/tally" "go.uber.org/zap" - "github.com/uber/submitqueue/core/consumer" - coremetrics "github.com/uber/submitqueue/core/metrics" - entityqueue "github.com/uber/submitqueue/entity/messagequeue" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" + "github.com/uber/submitqueue/platform/consumer" + coremetrics "github.com/uber/submitqueue/platform/metrics" "github.com/uber/submitqueue/submitqueue/core/topickey" "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 ffdcddd8..21de482f 100644 --- a/submitqueue/orchestrator/controller/merge/merge_test.go +++ b/submitqueue/orchestrator/controller/merge/merge_test.go @@ -25,11 +25,11 @@ import ( "go.uber.org/mock/gomock" "go.uber.org/zap/zaptest" - "github.com/uber/submitqueue/core/consumer" - "github.com/uber/submitqueue/core/errs" - "github.com/uber/submitqueue/entity/change" - entityqueue "github.com/uber/submitqueue/entity/messagequeue" - queuemock "github.com/uber/submitqueue/extension/messagequeue/mock" + "github.com/uber/submitqueue/platform/base/change" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" + "github.com/uber/submitqueue/platform/consumer" + "github.com/uber/submitqueue/platform/errs" + queuemock "github.com/uber/submitqueue/platform/extension/messagequeue/mock" "github.com/uber/submitqueue/submitqueue/core/topickey" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/pusher" diff --git a/submitqueue/orchestrator/controller/ping.go b/submitqueue/orchestrator/controller/ping.go index 069c648c..c5bb2d77 100644 --- a/submitqueue/orchestrator/controller/ping.go +++ b/submitqueue/orchestrator/controller/ping.go @@ -20,7 +20,7 @@ import ( "time" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/metrics" + "github.com/uber/submitqueue/platform/metrics" pb "github.com/uber/submitqueue/submitqueue/orchestrator/protopb" "go.uber.org/zap" ) diff --git a/submitqueue/orchestrator/controller/score/BUILD.bazel b/submitqueue/orchestrator/controller/score/BUILD.bazel index 96976e6c..6203ae66 100644 --- a/submitqueue/orchestrator/controller/score/BUILD.bazel +++ b/submitqueue/orchestrator/controller/score/BUILD.bazel @@ -6,9 +6,9 @@ go_library( importpath = "github.com/uber/submitqueue/submitqueue/orchestrator/controller/score", visibility = ["//visibility:public"], deps = [ - "//core/consumer", - "//core/metrics", - "//entity/messagequeue", + "//platform/base/messagequeue", + "//platform/consumer", + "//platform/metrics", "//submitqueue/core/request", "//submitqueue/core/topickey", "//submitqueue/entity", @@ -24,11 +24,11 @@ go_test( srcs = ["score_test.go"], embed = [":score"], deps = [ - "//core/consumer", - "//core/errs", - "//entity/change", - "//entity/messagequeue", - "//extension/messagequeue/mock", + "//platform/base/change", + "//platform/base/messagequeue", + "//platform/consumer", + "//platform/errs", + "//platform/extension/messagequeue/mock", "//submitqueue/core/topickey", "//submitqueue/entity", "//submitqueue/extension/scorer/mock", diff --git a/submitqueue/orchestrator/controller/score/score.go b/submitqueue/orchestrator/controller/score/score.go index 272713bc..257ae86d 100644 --- a/submitqueue/orchestrator/controller/score/score.go +++ b/submitqueue/orchestrator/controller/score/score.go @@ -19,9 +19,9 @@ import ( "fmt" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/consumer" - "github.com/uber/submitqueue/core/metrics" - entityqueue "github.com/uber/submitqueue/entity/messagequeue" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" + "github.com/uber/submitqueue/platform/consumer" + "github.com/uber/submitqueue/platform/metrics" corerequest "github.com/uber/submitqueue/submitqueue/core/request" "github.com/uber/submitqueue/submitqueue/core/topickey" "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 f1b91ddd..63671aff 100644 --- a/submitqueue/orchestrator/controller/score/score_test.go +++ b/submitqueue/orchestrator/controller/score/score_test.go @@ -22,11 +22,11 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/consumer" - "github.com/uber/submitqueue/core/errs" - "github.com/uber/submitqueue/entity/change" - entityqueue "github.com/uber/submitqueue/entity/messagequeue" - queuemock "github.com/uber/submitqueue/extension/messagequeue/mock" + "github.com/uber/submitqueue/platform/base/change" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" + "github.com/uber/submitqueue/platform/consumer" + "github.com/uber/submitqueue/platform/errs" + queuemock "github.com/uber/submitqueue/platform/extension/messagequeue/mock" "github.com/uber/submitqueue/submitqueue/core/topickey" "github.com/uber/submitqueue/submitqueue/entity" scorermock "github.com/uber/submitqueue/submitqueue/extension/scorer/mock" diff --git a/submitqueue/orchestrator/controller/speculate/BUILD.bazel b/submitqueue/orchestrator/controller/speculate/BUILD.bazel index fa1e9ae7..60fc0cd9 100644 --- a/submitqueue/orchestrator/controller/speculate/BUILD.bazel +++ b/submitqueue/orchestrator/controller/speculate/BUILD.bazel @@ -6,9 +6,9 @@ go_library( importpath = "github.com/uber/submitqueue/submitqueue/orchestrator/controller/speculate", visibility = ["//visibility:public"], deps = [ - "//core/consumer", - "//core/metrics", - "//entity/messagequeue", + "//platform/base/messagequeue", + "//platform/consumer", + "//platform/metrics", "//submitqueue/core/topickey", "//submitqueue/entity", "//submitqueue/extension/storage", @@ -22,10 +22,10 @@ go_test( srcs = ["speculate_test.go"], embed = [":speculate"], deps = [ - "//core/consumer", - "//core/errs", - "//entity/messagequeue", - "//extension/messagequeue/mock", + "//platform/base/messagequeue", + "//platform/consumer", + "//platform/errs", + "//platform/extension/messagequeue/mock", "//submitqueue/core/topickey", "//submitqueue/entity", "//submitqueue/extension/storage", diff --git a/submitqueue/orchestrator/controller/speculate/speculate.go b/submitqueue/orchestrator/controller/speculate/speculate.go index 2631c42e..f2d2b21b 100644 --- a/submitqueue/orchestrator/controller/speculate/speculate.go +++ b/submitqueue/orchestrator/controller/speculate/speculate.go @@ -20,9 +20,9 @@ import ( "fmt" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/consumer" - "github.com/uber/submitqueue/core/metrics" - entityqueue "github.com/uber/submitqueue/entity/messagequeue" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" + "github.com/uber/submitqueue/platform/consumer" + "github.com/uber/submitqueue/platform/metrics" "github.com/uber/submitqueue/submitqueue/core/topickey" "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 6b0a6b5f..7eff01b5 100644 --- a/submitqueue/orchestrator/controller/speculate/speculate_test.go +++ b/submitqueue/orchestrator/controller/speculate/speculate_test.go @@ -22,10 +22,10 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/consumer" - "github.com/uber/submitqueue/core/errs" - entityqueue "github.com/uber/submitqueue/entity/messagequeue" - queuemock "github.com/uber/submitqueue/extension/messagequeue/mock" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" + "github.com/uber/submitqueue/platform/consumer" + "github.com/uber/submitqueue/platform/errs" + queuemock "github.com/uber/submitqueue/platform/extension/messagequeue/mock" "github.com/uber/submitqueue/submitqueue/core/topickey" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/storage" diff --git a/submitqueue/orchestrator/controller/start/BUILD.bazel b/submitqueue/orchestrator/controller/start/BUILD.bazel index f147b9a0..ea280a66 100644 --- a/submitqueue/orchestrator/controller/start/BUILD.bazel +++ b/submitqueue/orchestrator/controller/start/BUILD.bazel @@ -6,9 +6,9 @@ go_library( importpath = "github.com/uber/submitqueue/submitqueue/orchestrator/controller/start", visibility = ["//visibility:public"], deps = [ - "//core/consumer", - "//core/metrics", - "//entity/messagequeue", + "//platform/base/messagequeue", + "//platform/consumer", + "//platform/metrics", "//submitqueue/core/request", "//submitqueue/core/topickey", "//submitqueue/entity", @@ -23,12 +23,12 @@ go_test( srcs = ["start_test.go"], embed = [":start"], deps = [ - "//core/consumer", - "//core/errs", - "//entity/change", - "//entity/mergestrategy", - "//entity/messagequeue", - "//extension/messagequeue/mock", + "//platform/base/change", + "//platform/base/mergestrategy", + "//platform/base/messagequeue", + "//platform/consumer", + "//platform/errs", + "//platform/extension/messagequeue/mock", "//submitqueue/core/topickey", "//submitqueue/entity", "//submitqueue/extension/storage", diff --git a/submitqueue/orchestrator/controller/start/start.go b/submitqueue/orchestrator/controller/start/start.go index 9a3e823a..69266610 100644 --- a/submitqueue/orchestrator/controller/start/start.go +++ b/submitqueue/orchestrator/controller/start/start.go @@ -20,9 +20,9 @@ import ( "fmt" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/consumer" - "github.com/uber/submitqueue/core/metrics" - entityqueue "github.com/uber/submitqueue/entity/messagequeue" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" + "github.com/uber/submitqueue/platform/consumer" + "github.com/uber/submitqueue/platform/metrics" corerequest "github.com/uber/submitqueue/submitqueue/core/request" "github.com/uber/submitqueue/submitqueue/core/topickey" "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 bb593e69..9a11e5ac 100644 --- a/submitqueue/orchestrator/controller/start/start_test.go +++ b/submitqueue/orchestrator/controller/start/start_test.go @@ -22,12 +22,12 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/consumer" - "github.com/uber/submitqueue/core/errs" - "github.com/uber/submitqueue/entity/change" - "github.com/uber/submitqueue/entity/mergestrategy" - entityqueue "github.com/uber/submitqueue/entity/messagequeue" - queuemock "github.com/uber/submitqueue/extension/messagequeue/mock" + "github.com/uber/submitqueue/platform/base/change" + "github.com/uber/submitqueue/platform/base/mergestrategy" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" + "github.com/uber/submitqueue/platform/consumer" + "github.com/uber/submitqueue/platform/errs" + queuemock "github.com/uber/submitqueue/platform/extension/messagequeue/mock" "github.com/uber/submitqueue/submitqueue/core/topickey" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/storage" diff --git a/submitqueue/orchestrator/controller/validate/BUILD.bazel b/submitqueue/orchestrator/controller/validate/BUILD.bazel index 5c14f306..c3056bb3 100644 --- a/submitqueue/orchestrator/controller/validate/BUILD.bazel +++ b/submitqueue/orchestrator/controller/validate/BUILD.bazel @@ -6,10 +6,10 @@ go_library( importpath = "github.com/uber/submitqueue/submitqueue/orchestrator/controller/validate", visibility = ["//visibility:public"], deps = [ - "//core/consumer", - "//core/errs", - "//core/metrics", - "//entity/messagequeue", + "//platform/base/messagequeue", + "//platform/consumer", + "//platform/errs", + "//platform/metrics", "//submitqueue/core/topickey", "//submitqueue/entity", "//submitqueue/extension/changeprovider", @@ -25,12 +25,12 @@ go_test( srcs = ["validate_test.go"], embed = [":validate"], deps = [ - "//core/consumer", - "//core/errs", - "//entity/change", - "//entity/mergestrategy", - "//entity/messagequeue", - "//extension/messagequeue/mock", + "//platform/base/change", + "//platform/base/mergestrategy", + "//platform/base/messagequeue", + "//platform/consumer", + "//platform/errs", + "//platform/extension/messagequeue/mock", "//submitqueue/core/topickey", "//submitqueue/entity", "//submitqueue/extension/changeprovider/mock", diff --git a/submitqueue/orchestrator/controller/validate/validate.go b/submitqueue/orchestrator/controller/validate/validate.go index f7a9e8a7..81f782f5 100644 --- a/submitqueue/orchestrator/controller/validate/validate.go +++ b/submitqueue/orchestrator/controller/validate/validate.go @@ -21,10 +21,10 @@ import ( "time" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/consumer" - "github.com/uber/submitqueue/core/errs" - coremetrics "github.com/uber/submitqueue/core/metrics" - entityqueue "github.com/uber/submitqueue/entity/messagequeue" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" + "github.com/uber/submitqueue/platform/consumer" + "github.com/uber/submitqueue/platform/errs" + coremetrics "github.com/uber/submitqueue/platform/metrics" "github.com/uber/submitqueue/submitqueue/core/topickey" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/changeprovider" @@ -121,7 +121,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/messagequeue) guarantees serial processing within + // (see platform/consumer + platform/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 d72d5e0b..5580b7e4 100644 --- a/submitqueue/orchestrator/controller/validate/validate_test.go +++ b/submitqueue/orchestrator/controller/validate/validate_test.go @@ -22,12 +22,12 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/consumer" - "github.com/uber/submitqueue/core/errs" - "github.com/uber/submitqueue/entity/change" - "github.com/uber/submitqueue/entity/mergestrategy" - entityqueue "github.com/uber/submitqueue/entity/messagequeue" - queuemock "github.com/uber/submitqueue/extension/messagequeue/mock" + "github.com/uber/submitqueue/platform/base/change" + "github.com/uber/submitqueue/platform/base/mergestrategy" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" + "github.com/uber/submitqueue/platform/consumer" + "github.com/uber/submitqueue/platform/errs" + queuemock "github.com/uber/submitqueue/platform/extension/messagequeue/mock" "github.com/uber/submitqueue/submitqueue/core/topickey" "github.com/uber/submitqueue/submitqueue/entity" changeprovidermock "github.com/uber/submitqueue/submitqueue/extension/changeprovider/mock" diff --git a/test/e2e/submitqueue/BUILD.bazel b/test/e2e/submitqueue/BUILD.bazel index 01bb5273..0c72dcaf 100644 --- a/test/e2e/submitqueue/BUILD.bazel +++ b/test/e2e/submitqueue/BUILD.bazel @@ -7,8 +7,8 @@ go_test( "//:MODULE.bazel", "//:go.mod", "//example/submitqueue:docker-compose.yml", - "//extension/counter/mysql/schema", - "//extension/messagequeue/mysql/schema", + "//platform/extension/counter/mysql/schema", + "//platform/extension/messagequeue/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 91fb0fb7..068ecbd0 100644 --- a/test/e2e/submitqueue/suite_test.go +++ b/test/e2e/submitqueue/suite_test.go @@ -99,10 +99,10 @@ 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("extension/counter/mysql/schema")) + testutil.ApplySchema(t, s.log, s.db, testutil.SchemaDir("platform/extension/counter/mysql/schema")) // Apply schemas programmatically to queue database - testutil.ApplySchema(t, s.log, s.queueDB, testutil.SchemaDir("extension/messagequeue/mysql/schema")) + testutil.ApplySchema(t, s.log, s.queueDB, testutil.SchemaDir("platform/extension/messagequeue/mysql/schema")) s.log.Logf("Schemas applied successfully") diff --git a/test/integration/extension/counter/BUILD.bazel b/test/integration/extension/counter/BUILD.bazel index 3e502f51..d1ff6925 100644 --- a/test/integration/extension/counter/BUILD.bazel +++ b/test/integration/extension/counter/BUILD.bazel @@ -6,7 +6,7 @@ go_library( importpath = "github.com/uber/submitqueue/test/integration/extension/counter", visibility = ["//visibility:public"], deps = [ - "//extension/counter", + "//platform/extension/counter", "//test/testutil", "@com_github_stretchr_testify//assert", "@com_github_stretchr_testify//require", diff --git a/test/integration/extension/counter/mysql/BUILD.bazel b/test/integration/extension/counter/mysql/BUILD.bazel index 980774eb..f61e359f 100644 --- a/test/integration/extension/counter/mysql/BUILD.bazel +++ b/test/integration/extension/counter/mysql/BUILD.bazel @@ -5,14 +5,14 @@ go_test( srcs = ["counter_test.go"], data = [ "docker-compose.yml", - "//extension/counter/mysql/schema", + "//platform/extension/counter/mysql/schema", ], tags = [ "external", "integration", ], deps = [ - "//extension/counter/mysql", + "//platform/extension/counter/mysql", "//test/integration/extension/counter", "//test/testutil", "@com_github_go_sql_driver_mysql//:mysql", diff --git a/test/integration/extension/counter/mysql/counter_test.go b/test/integration/extension/counter/mysql/counter_test.go index 05675460..6787b4c5 100644 --- a/test/integration/extension/counter/mysql/counter_test.go +++ b/test/integration/extension/counter/mysql/counter_test.go @@ -23,7 +23,7 @@ import ( "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" "github.com/uber-go/tally" - mysqlcounter "github.com/uber/submitqueue/extension/counter/mysql" + mysqlcounter "github.com/uber/submitqueue/platform/extension/counter/mysql" countersuite "github.com/uber/submitqueue/test/integration/extension/counter" "github.com/uber/submitqueue/test/testutil" ) @@ -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("extension/counter/mysql/schema") + schemaDir := testutil.SchemaDir("platform/extension/counter/mysql/schema") testutil.ApplySchema(t, s.log, s.db, schemaDir) s.log.Logf("Schemas applied successfully") diff --git a/test/integration/extension/counter/suite.go b/test/integration/extension/counter/suite.go index a0f04ae5..dc4a03c4 100644 --- a/test/integration/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/extension/counter" + "github.com/uber/submitqueue/platform/extension/counter" "github.com/uber/submitqueue/test/testutil" ) diff --git a/test/integration/extension/messagequeue/mysql/BUILD.bazel b/test/integration/extension/messagequeue/mysql/BUILD.bazel index 918ea4bf..7d04e9d6 100644 --- a/test/integration/extension/messagequeue/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/messagequeue/mysql/schema", + "//platform/extension/messagequeue/mysql/schema", ], tags = [ "external", "integration", ], deps = [ - "//entity/messagequeue", - "//extension/messagequeue", - "//extension/messagequeue/mysql", - "//extension/messagequeue/mysql/ctl/lib", + "//platform/base/messagequeue", + "//platform/extension/messagequeue", + "//platform/extension/messagequeue/mysql", + "//platform/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/messagequeue/mysql/README.md b/test/integration/extension/messagequeue/mysql/README.md index e3279404..08b6654b 100644 --- a/test/integration/extension/messagequeue/mysql/README.md +++ b/test/integration/extension/messagequeue/mysql/README.md @@ -8,7 +8,7 @@ Tests run against a real MySQL 8.0 instance via Docker Compose (`docker-compose. 1. Starts MySQL on a random ephemeral port 2. Waits for the health check to pass -3. Connects and applies schemas from `extension/queue/mysql/schema/` +3. Connects and applies schemas from `platform/extension/messagequeue/mysql/schema/` 4. Tears down on test completion All tests share a single MySQL instance within the suite (`SetupSuite` / `TearDownSuite`). Each test uses unique topic names to avoid cross-test interference. @@ -17,7 +17,7 @@ All tests share a single MySQL instance within the suite (`SetupSuite` / `TearDo ```bash make integration-test # all integration tests -bazel test //test/integration/extension/queue/mysql:mysql_test --test_output=streamed +bazel test //test/integration/extension/messagequeue/mysql:mysql_test --test_output=streamed ``` Requires Docker. diff --git a/test/integration/extension/messagequeue/mysql/queue_test.go b/test/integration/extension/messagequeue/mysql/queue_test.go index 9d9b62bb..558a2cde 100644 --- a/test/integration/extension/messagequeue/mysql/queue_test.go +++ b/test/integration/extension/messagequeue/mysql/queue_test.go @@ -30,10 +30,10 @@ import ( "github.com/uber-go/tally" "go.uber.org/zap/zaptest" - 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" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" + extqueue "github.com/uber/submitqueue/platform/extension/messagequeue" + queueMySQL "github.com/uber/submitqueue/platform/extension/messagequeue/mysql" + queueAdmin "github.com/uber/submitqueue/platform/extension/messagequeue/mysql/ctl/lib" "github.com/uber/submitqueue/test/testutil" ) @@ -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/messagequeue/mysql/schema") + schemaDir := testutil.SchemaDir("platform/extension/messagequeue/mysql/schema") testutil.ApplySchema(t, s.log, s.db, schemaDir) s.log.Logf("Schemas applied successfully") diff --git a/test/integration/stovepipe/gateway/BUILD.bazel b/test/integration/stovepipe/gateway/BUILD.bazel index a03d0fec..18cb366d 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/messagequeue/mysql/schema", + "//platform/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 dfdc8bca..0a74cccf 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/messagequeue/mysql/schema")) + testutil.ApplySchema(t, s.log, queueDB, testutil.SchemaDir("platform/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 7b123124..f819b614 100644 --- a/test/integration/submitqueue/core/consumer/BUILD.bazel +++ b/test/integration/submitqueue/core/consumer/BUILD.bazel @@ -5,18 +5,18 @@ go_test( srcs = ["consumer_test.go"], data = [ "docker-compose.yml", - "//extension/messagequeue/mysql/schema", + "//platform/extension/messagequeue/mysql/schema", ], tags = [ "external", "integration", ], deps = [ - "//core/consumer", - "//core/errs", - "//entity/messagequeue", - "//extension/messagequeue", - "//extension/messagequeue/mysql", + "//platform/base/messagequeue", + "//platform/consumer", + "//platform/errs", + "//platform/extension/messagequeue", + "//platform/extension/messagequeue/mysql", "//test/testutil", "@com_github_go_sql_driver_mysql//:mysql", "@com_github_stretchr_testify//require", diff --git a/test/integration/submitqueue/core/consumer/consumer_test.go b/test/integration/submitqueue/core/consumer/consumer_test.go index d8acfba1..98709155 100644 --- a/test/integration/submitqueue/core/consumer/consumer_test.go +++ b/test/integration/submitqueue/core/consumer/consumer_test.go @@ -14,11 +14,11 @@ import ( "github.com/uber-go/tally" "go.uber.org/zap/zaptest" - "github.com/uber/submitqueue/core/consumer" - "github.com/uber/submitqueue/core/errs" - entityqueue "github.com/uber/submitqueue/entity/messagequeue" - extqueue "github.com/uber/submitqueue/extension/messagequeue" - queueMySQL "github.com/uber/submitqueue/extension/messagequeue/mysql" + entityqueue "github.com/uber/submitqueue/platform/base/messagequeue" + "github.com/uber/submitqueue/platform/consumer" + "github.com/uber/submitqueue/platform/errs" + extqueue "github.com/uber/submitqueue/platform/extension/messagequeue" + queueMySQL "github.com/uber/submitqueue/platform/extension/messagequeue/mysql" "github.com/uber/submitqueue/test/testutil" ) @@ -86,7 +86,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/messagequeue/mysql/schema") + schemaDir := testutil.SchemaDir("platform/extension/messagequeue/mysql/schema") testutil.ApplySchema(t, s.log, s.db, schemaDir) t.Cleanup(func() { diff --git a/test/integration/submitqueue/extension/storage/BUILD.bazel b/test/integration/submitqueue/extension/storage/BUILD.bazel index 508c9edc..a1ed1719 100644 --- a/test/integration/submitqueue/extension/storage/BUILD.bazel +++ b/test/integration/submitqueue/extension/storage/BUILD.bazel @@ -6,8 +6,8 @@ go_library( importpath = "github.com/uber/submitqueue/test/integration/submitqueue/extension/storage", visibility = ["//visibility:public"], deps = [ - "//entity/change", - "//entity/mergestrategy", + "//platform/base/change", + "//platform/base/mergestrategy", "//submitqueue/entity", "//submitqueue/extension/storage", "//test/testutil", diff --git a/test/integration/submitqueue/extension/storage/suite.go b/test/integration/submitqueue/extension/storage/suite.go index 064800c9..23984461 100644 --- a/test/integration/submitqueue/extension/storage/suite.go +++ b/test/integration/submitqueue/extension/storage/suite.go @@ -21,8 +21,8 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" - "github.com/uber/submitqueue/entity/change" - "github.com/uber/submitqueue/entity/mergestrategy" + "github.com/uber/submitqueue/platform/base/change" + "github.com/uber/submitqueue/platform/base/mergestrategy" "github.com/uber/submitqueue/submitqueue/entity" "github.com/uber/submitqueue/submitqueue/extension/storage" "github.com/uber/submitqueue/test/testutil" diff --git a/test/integration/submitqueue/gateway/BUILD.bazel b/test/integration/submitqueue/gateway/BUILD.bazel index b43dae8f..5fe3b481 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/counter/mysql/schema", - "//extension/messagequeue/mysql/schema", + "//platform/extension/counter/mysql/schema", + "//platform/extension/messagequeue/mysql/schema", "//submitqueue/extension/storage/mysql/schema", ], tags = [ @@ -16,8 +16,8 @@ go_test( "integration", ], deps = [ - "//core/consumer", - "//extension/messagequeue/mysql", + "//platform/consumer", + "//platform/extension/messagequeue/mysql", "//submitqueue/core/request", "//submitqueue/core/topickey", "//submitqueue/entity", diff --git a/test/integration/submitqueue/gateway/suite_test.go b/test/integration/submitqueue/gateway/suite_test.go index 0efadd22..8081925b 100644 --- a/test/integration/submitqueue/gateway/suite_test.go +++ b/test/integration/submitqueue/gateway/suite_test.go @@ -36,8 +36,8 @@ import ( "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" "github.com/uber-go/tally" - "github.com/uber/submitqueue/core/consumer" - queueMySQL "github.com/uber/submitqueue/extension/messagequeue/mysql" + "github.com/uber/submitqueue/platform/consumer" + queueMySQL "github.com/uber/submitqueue/platform/extension/messagequeue/mysql" corerequest "github.com/uber/submitqueue/submitqueue/core/request" "github.com/uber/submitqueue/submitqueue/core/topickey" "github.com/uber/submitqueue/submitqueue/entity" @@ -104,10 +104,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("extension/counter/mysql/schema")) + testutil.ApplySchema(t, s.log, s.db, testutil.SchemaDir("platform/extension/counter/mysql/schema")) // Apply schemas programmatically to queue database - testutil.ApplySchema(t, s.log, s.queueDB, testutil.SchemaDir("extension/messagequeue/mysql/schema")) + testutil.ApplySchema(t, s.log, s.queueDB, testutil.SchemaDir("platform/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 6c12fdc7..8c816a1c 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/counter/mysql/schema", - "//extension/messagequeue/mysql/schema", + "//platform/extension/counter/mysql/schema", + "//platform/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 0d65018b..620a2046 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("extension/counter/mysql/schema")) + testutil.ApplySchema(t, s.log, s.db, testutil.SchemaDir("platform/extension/counter/mysql/schema")) // Apply schemas programmatically to queue database - testutil.ApplySchema(t, s.log, s.queueDB, testutil.SchemaDir("extension/messagequeue/mysql/schema")) + testutil.ApplySchema(t, s.log, s.queueDB, testutil.SchemaDir("platform/extension/messagequeue/mysql/schema")) s.log.Logf("Schemas applied successfully") diff --git a/test/testutil/schema.go b/test/testutil/schema.go index 44690b08..e4271802 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/messagequeue/mysql/schema" +// relativePath should be like "submitqueue/extension/storage/mysql/schema" or "platform/extension/messagequeue/mysql/schema" func SchemaDir(relativePath string) string { // Bazel runfiles path if dir := os.Getenv("TEST_SRCDIR"); dir != "" {