Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
21ec949
chore(v2)!: bump module path to github.com/stackshy/cloudemu/v2
NitinKumar004 Jul 12, 2026
c45972c
refactor(v2): move azureai → services/azureai
NitinKumar004 Jul 12, 2026
aa9d5e8
refactor(v2): move azuresearch → services/azuresearch
NitinKumar004 Jul 12, 2026
c1f0325
refactor(v2): move bedrock → services/bedrock
NitinKumar004 Jul 12, 2026
a2d2ddf
refactor(v2): move cache → services/cache
NitinKumar004 Jul 12, 2026
ce3eb77
refactor(v2): move compute → services/compute
NitinKumar004 Jul 12, 2026
12121ec
refactor(v2): move containerregistry → services/containerregistry
NitinKumar004 Jul 12, 2026
910aa39
refactor(v2): move database → services/database
NitinKumar004 Jul 12, 2026
7941f72
refactor(v2): move databricks → services/databricks
NitinKumar004 Jul 12, 2026
ddc81b5
refactor(v2): move dns → services/dns
NitinKumar004 Jul 12, 2026
13e5c2b
refactor(v2): move eventbus → services/eventbus
NitinKumar004 Jul 12, 2026
3aff960
refactor(v2): move iam → services/iam
NitinKumar004 Jul 12, 2026
849ca64
refactor(v2): move loadbalancer → services/loadbalancer
NitinKumar004 Jul 12, 2026
3f7954b
refactor(v2): move logging → services/logging
NitinKumar004 Jul 12, 2026
a8f9061
refactor(v2): move messagequeue → services/messagequeue
NitinKumar004 Jul 12, 2026
b5beb44
refactor(v2): move monitoring → services/monitoring
NitinKumar004 Jul 12, 2026
aeee56e
refactor(v2): move networking → services/networking
NitinKumar004 Jul 12, 2026
3374336
refactor(v2): move notification → services/notification
NitinKumar004 Jul 12, 2026
5980c1f
refactor(v2): move parameterstore → services/parameterstore
NitinKumar004 Jul 12, 2026
886ddf7
refactor(v2): move relationaldb → services/relationaldb
NitinKumar004 Jul 12, 2026
6801c95
refactor(v2): move sagemaker → services/sagemaker
NitinKumar004 Jul 12, 2026
3090af5
refactor(v2): move secrets → services/secrets
NitinKumar004 Jul 12, 2026
08e7a19
refactor(v2): move serverless → services/serverless
NitinKumar004 Jul 12, 2026
c9a6656
refactor(v2): move storage → services/storage
NitinKumar004 Jul 12, 2026
0a483e5
refactor(v2): move tablestorage → services/tablestorage
NitinKumar004 Jul 12, 2026
b6a6edc
refactor(v2): move vertexai → services/vertexai
NitinKumar004 Jul 12, 2026
3571b56
refactor(v2): move kubernetes → services/kubernetes
NitinKumar004 Jul 12, 2026
8d8ee97
refactor(v2): move cost → services/cost
NitinKumar004 Jul 12, 2026
41f5909
refactor(v2): move resourcediscovery → services/resourcediscovery
NitinKumar004 Jul 12, 2026
6f76949
refactor(v2): move chaos → features/chaos
NitinKumar004 Jul 12, 2026
7d42a08
refactor(v2): move inject → features/inject
NitinKumar004 Jul 12, 2026
132bb90
refactor(v2): move metrics → features/metrics
NitinKumar004 Jul 12, 2026
5aa13cd
refactor(v2): move ratelimit → features/ratelimit
NitinKumar004 Jul 12, 2026
761f05b
refactor(v2): move recorder → features/recorder
NitinKumar004 Jul 12, 2026
d23ca93
refactor(v2): move topology → features/topology
NitinKumar004 Jul 12, 2026
99e1547
refactor(v2): move pagination → internal/pagination
NitinKumar004 Jul 12, 2026
1e4a31c
refactor(v2): move statemachine → internal/statemachine
NitinKumar004 Jul 12, 2026
9c67a35
refactor(v2): update AWS provider imports to v2 layout
NitinKumar004 Jul 12, 2026
8dd4161
refactor(v2): update Azure provider imports to v2 layout
NitinKumar004 Jul 12, 2026
91d3257
refactor(v2): update GCP provider imports to v2 layout
NitinKumar004 Jul 12, 2026
0821ccf
refactor(v2): update AWS server imports to v2 layout
NitinKumar004 Jul 12, 2026
67592a0
refactor(v2): update Azure server imports to v2 layout
NitinKumar004 Jul 12, 2026
6a0c36c
refactor(v2): update GCP server imports to v2 layout
NitinKumar004 Jul 12, 2026
3a6f400
refactor(v2): update server core/wire imports to v2 layout
NitinKumar004 Jul 12, 2026
52c0c1e
refactor(v2): update examples imports to v2 layout
NitinKumar004 Jul 12, 2026
eb440bf
refactor(v2): update internal helper imports to v2 layout
NitinKumar004 Jul 12, 2026
7dafb8a
docs(v2): rewrite package overview for the new services/features/prov…
NitinKumar004 Jul 12, 2026
2337f73
docs(v2): update README import paths and badges to the v2 module
NitinKumar004 Jul 12, 2026
8a3b1db
docs(v2): update in-repo docs import paths to the v2 module layout
NitinKumar004 Jul 12, 2026
5b07503
fix(security): bound RunInstances count + drop sized alloc in FindNei…
NitinKumar004 Jul 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
</p>

<p align="center">
<a href="https://pkg.go.dev/github.com/stackshy/cloudemu"><img src="https://pkg.go.dev/badge/github.com/stackshy/cloudemu.svg" alt="Go Reference"></a>
<a href="https://goreportcard.com/report/github.com/stackshy/cloudemu"><img src="https://goreportcard.com/badge/github.com/stackshy/cloudemu" alt="Go Report Card"></a>
<a href="https://pkg.go.dev/github.com/stackshy/cloudemu/v2"><img src="https://pkg.go.dev/badge/github.com/stackshy/cloudemu/v2.svg" alt="Go Reference"></a>
<a href="https://goreportcard.com/report/github.com/stackshy/cloudemu/v2"><img src="https://goreportcard.com/badge/github.com/stackshy/cloudemu/v2" alt="Go Report Card"></a>
<a href="https://github.com/stackshy/cloudemu/blob/development/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="MIT License"></a>
<img src="https://img.shields.io/badge/Go-1.25+-00ADD8?logo=go&logoColor=white" alt="Go Version">
<img src="https://img.shields.io/badge/providers-AWS_|_Azure_|_GCP-orange" alt="Providers">
Expand All @@ -30,7 +30,7 @@ It ships two surfaces you can mix and match:
## Install

```bash
go get github.com/stackshy/cloudemu
go get github.com/stackshy/cloudemu/v2
```

Requires Go 1.25+.
Expand All @@ -45,8 +45,8 @@ import (

"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/service/s3"
"github.com/stackshy/cloudemu"
awsserver "github.com/stackshy/cloudemu/server/aws"
"github.com/stackshy/cloudemu/v2"
awsserver "github.com/stackshy/cloudemu/v2/server/aws"
)

cloud := cloudemu.NewAWS()
Expand Down
8 changes: 4 additions & 4 deletions cloudemu.go
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package cloudemu

import (
"github.com/stackshy/cloudemu/config"
"github.com/stackshy/cloudemu/providers/aws"
"github.com/stackshy/cloudemu/providers/azure"
"github.com/stackshy/cloudemu/providers/gcp"
"github.com/stackshy/cloudemu/v2/config"
"github.com/stackshy/cloudemu/v2/providers/aws"
"github.com/stackshy/cloudemu/v2/providers/azure"
"github.com/stackshy/cloudemu/v2/providers/gcp"
)

// NewAWS creates a new AWS mock provider.
Expand Down
58 changes: 30 additions & 28 deletions cloudemu_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,34 +7,34 @@ import (
"testing"
"time"

"github.com/stackshy/cloudemu/compute"
computedriver "github.com/stackshy/cloudemu/compute/driver"
"github.com/stackshy/cloudemu/config"
"github.com/stackshy/cloudemu/cost"
"github.com/stackshy/cloudemu/database/driver"
dnsdriver "github.com/stackshy/cloudemu/dns/driver"
cerrors "github.com/stackshy/cloudemu/errors"
iamdriver "github.com/stackshy/cloudemu/iam/driver"
"github.com/stackshy/cloudemu/inject"
mqdriver "github.com/stackshy/cloudemu/messagequeue/driver"
"github.com/stackshy/cloudemu/metrics"
mondriver "github.com/stackshy/cloudemu/monitoring/driver"
netdriver "github.com/stackshy/cloudemu/networking/driver"
"github.com/stackshy/cloudemu/ratelimit"
"github.com/stackshy/cloudemu/recorder"
serverlessdriver "github.com/stackshy/cloudemu/serverless/driver"
"github.com/stackshy/cloudemu/storage"
storagedriver "github.com/stackshy/cloudemu/storage/driver"

lbdriver "github.com/stackshy/cloudemu/loadbalancer/driver"

cachedriver "github.com/stackshy/cloudemu/cache/driver"
crdriver "github.com/stackshy/cloudemu/containerregistry/driver"
ebdriver "github.com/stackshy/cloudemu/eventbus/driver"
loggingdriver "github.com/stackshy/cloudemu/logging/driver"
notifdriver "github.com/stackshy/cloudemu/notification/driver"
secretsdriver "github.com/stackshy/cloudemu/secrets/driver"
"github.com/stackshy/cloudemu/topology"
"github.com/stackshy/cloudemu/v2/config"
cerrors "github.com/stackshy/cloudemu/v2/errors"
"github.com/stackshy/cloudemu/v2/features/inject"
"github.com/stackshy/cloudemu/v2/features/metrics"
"github.com/stackshy/cloudemu/v2/features/ratelimit"
"github.com/stackshy/cloudemu/v2/features/recorder"
"github.com/stackshy/cloudemu/v2/services/compute"
computedriver "github.com/stackshy/cloudemu/v2/services/compute/driver"
"github.com/stackshy/cloudemu/v2/services/cost"
"github.com/stackshy/cloudemu/v2/services/database/driver"
dnsdriver "github.com/stackshy/cloudemu/v2/services/dns/driver"
iamdriver "github.com/stackshy/cloudemu/v2/services/iam/driver"
mqdriver "github.com/stackshy/cloudemu/v2/services/messagequeue/driver"
mondriver "github.com/stackshy/cloudemu/v2/services/monitoring/driver"
netdriver "github.com/stackshy/cloudemu/v2/services/networking/driver"
serverlessdriver "github.com/stackshy/cloudemu/v2/services/serverless/driver"
"github.com/stackshy/cloudemu/v2/services/storage"
storagedriver "github.com/stackshy/cloudemu/v2/services/storage/driver"

lbdriver "github.com/stackshy/cloudemu/v2/services/loadbalancer/driver"

"github.com/stackshy/cloudemu/v2/features/topology"
cachedriver "github.com/stackshy/cloudemu/v2/services/cache/driver"
crdriver "github.com/stackshy/cloudemu/v2/services/containerregistry/driver"
ebdriver "github.com/stackshy/cloudemu/v2/services/eventbus/driver"
loggingdriver "github.com/stackshy/cloudemu/v2/services/logging/driver"
notifdriver "github.com/stackshy/cloudemu/v2/services/notification/driver"
secretsdriver "github.com/stackshy/cloudemu/v2/services/secrets/driver"
)

func TestStorageLifecycle(t *testing.T) {
Expand Down Expand Up @@ -8229,6 +8229,7 @@ func testGSIOperations(t *testing.T, ctx context.Context, d driver.Database) {
t.Errorf("expected NotFound for missing table, got %v", err)
}
}

// Event Source Mapping Tests
func testEventSourceMapping(t *testing.T, ctx context.Context, d serverlessdriver.Serverless) {
t.Helper()
Expand Down Expand Up @@ -8423,6 +8424,7 @@ func TestEventSourceMappingGCP(t *testing.T) {
p := NewGCP()
testEventSourceMapping(t, ctx, p.CloudFunctions)
}

// ─── VPC Endpoints ────────────────────────────────────────────

func TestVPCEndpointAWS(t *testing.T) {
Expand Down
27 changes: 16 additions & 11 deletions doc.go
Original file line number Diff line number Diff line change
@@ -1,19 +1,24 @@
// Package cloudemu provides zero-cost, in-memory cloud emulation of
// AWS, Azure, and GCP cloud services for Go.
//
// cloudemu follows a three-layer architecture:
// The repository is organized by role so new services and features slot into
// predictable places:
//
// - Portable API: High-level types (storage.Bucket, compute.Compute, etc.)
// that wrap drivers with cross-cutting concerns like recording, metrics,
// rate limiting, and error injection.
// - services/<name>: the emulated cloud services. Each holds the Portable API
// type (e.g. services/storage's storage.Bucket) plus its driver interface
// under services/<name>/driver.
//
// - Driver Interfaces: Minimal contracts (storage/driver, compute/driver, etc.)
// that each provider must implement.
// - providers/{aws,azure,gcp}: in-memory backends implementing the drivers.
//
// - Provider Implementations: In-memory backends (providers/aws/s3, providers/azure/blobstorage,
// providers/gcp/gcs, etc.) powered by a generic memstore.
// - server/{aws,azure,gcp}: SDK-compat HTTP servers that speak each cloud's
// real wire protocol, so unmodified SDK clients drive the backends.
//
// 10 cloud services are covered across all three providers: Storage, Compute,
// Database, Serverless, Networking, Monitoring, IAM, DNS, Load Balancer,
// and Message Queue.
// - features/<name>: cross-cutting capabilities you wrap drivers with —
// chaos, recorder, metrics, inject, ratelimit, and topology.
//
// - config, errors: foundational options and the canonical error type.
//
// The three surfaces build on the same drivers: the SDK-compat server (the
// primary entrypoint), the Portable API (services/<name>), and the cross-cutting
// features, so a behavior implemented in a driver lights up across all of them.
package cloudemu
2 changes: 1 addition & 1 deletion docs/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ aws.DynamoDB.CreateTable(ctx, tableConfig)
cloudemu.go # Entry point: NewAWS(), NewAzure(), NewGCP()
cloudemu_test.go # All tests
doc.go # Package documentation
go.mod # Module: github.com/stackshy/cloudemu
go.mod # Module: github.com/stackshy/cloudemu/v2
config/
options.go # Options, WithClock, WithRegion, etc.
clock.go # Clock, RealClock, FakeClock
Expand Down
8 changes: 4 additions & 4 deletions docs/chaos.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ Wrap any driver with the chaos engine before handing it to the portable API or t

```go
import (
"github.com/stackshy/cloudemu"
"github.com/stackshy/cloudemu/chaos"
"github.com/stackshy/cloudemu/config"
awsserver "github.com/stackshy/cloudemu/server/aws"
"github.com/stackshy/cloudemu/v2"
"github.com/stackshy/cloudemu/v2/features/chaos"
"github.com/stackshy/cloudemu/v2/config"
awsserver "github.com/stackshy/cloudemu/v2/server/aws"
)

cloud := cloudemu.NewAWS()
Expand Down
12 changes: 6 additions & 6 deletions docs/features.md
Original file line number Diff line number Diff line change
Expand Up @@ -289,12 +289,12 @@ import (
"time"
"errors"

"github.com/stackshy/cloudemu/storage"
"github.com/stackshy/cloudemu/recorder"
"github.com/stackshy/cloudemu/metrics"
"github.com/stackshy/cloudemu/ratelimit"
"github.com/stackshy/cloudemu/inject"
cerrors "github.com/stackshy/cloudemu/errors"
"github.com/stackshy/cloudemu/v2/services/storage"
"github.com/stackshy/cloudemu/v2/features/recorder"
"github.com/stackshy/cloudemu/v2/features/metrics"
"github.com/stackshy/cloudemu/v2/features/ratelimit"
"github.com/stackshy/cloudemu/v2/features/inject"
cerrors "github.com/stackshy/cloudemu/v2/errors"
)

rec := recorder.New()
Expand Down
26 changes: 13 additions & 13 deletions docs/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
## Installation

```bash
go get github.com/stackshy/cloudemu
go get github.com/stackshy/cloudemu/v2
```

Requires Go 1.25.0 or later.
Expand All @@ -20,7 +20,7 @@ package main
import (
"context"

"github.com/stackshy/cloudemu"
"github.com/stackshy/cloudemu/v2"
)

func main() {
Expand Down Expand Up @@ -71,7 +71,7 @@ import (
"context"
"fmt"

"github.com/stackshy/cloudemu"
"github.com/stackshy/cloudemu/v2"
)

func main() {
Expand Down Expand Up @@ -114,8 +114,8 @@ import (
"context"
"fmt"

"github.com/stackshy/cloudemu"
cdriver "github.com/stackshy/cloudemu/compute/driver"
"github.com/stackshy/cloudemu/v2"
cdriver "github.com/stackshy/cloudemu/v2/services/compute/driver"
)

func main() {
Expand Down Expand Up @@ -162,8 +162,8 @@ import (
"context"
"fmt"

"github.com/stackshy/cloudemu"
ddriver "github.com/stackshy/cloudemu/database/driver"
"github.com/stackshy/cloudemu/v2"
ddriver "github.com/stackshy/cloudemu/v2/services/database/driver"
)

func main() {
Expand Down Expand Up @@ -228,8 +228,8 @@ All three factory functions accept `config.Option` values for customization.
import (
"time"

"github.com/stackshy/cloudemu"
"github.com/stackshy/cloudemu/config"
"github.com/stackshy/cloudemu/v2"
"github.com/stackshy/cloudemu/v2/config"
)

// Custom region
Expand Down Expand Up @@ -272,7 +272,7 @@ CloudEmu uses canonical error codes from the `errors` package. Use the helper fu

```go
import (
cerrors "github.com/stackshy/cloudemu/errors"
cerrors "github.com/stackshy/cloudemu/v2/errors"
)

// Try to get a non-existent bucket
Expand Down Expand Up @@ -377,9 +377,9 @@ import (
"testing"
"time"

"github.com/stackshy/cloudemu"
"github.com/stackshy/cloudemu/config"
sdriver "github.com/stackshy/cloudemu/storage/driver"
"github.com/stackshy/cloudemu/v2"
"github.com/stackshy/cloudemu/v2/config"
sdriver "github.com/stackshy/cloudemu/v2/services/storage/driver"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
Expand Down
2 changes: 1 addition & 1 deletion docs/integration.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ Keep CloudEmu in `_test.go` only — never import it from production code.
## Tell your AI agent (paste into your repo's `AGENTS.md`)

```markdown
CloudEmu (github.com/stackshy/cloudemu) is an in-memory cloud emulator. To integrate it:
CloudEmu (github.com/stackshy/cloudemu/v2) is an in-memory cloud emulator. To integrate it:
do NOT create a demo main.go — wire it into the real code so existing tests exercise it.
Make the SDK endpoint injectable however this codebase prefers (an env var, a config field,
or set directly in the test — your choice) and point it at CloudEmu: AWS o.BaseEndpoint,
Expand Down
16 changes: 8 additions & 8 deletions docs/sdk-server.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ import (

"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/service/s3"
"github.com/stackshy/cloudemu"
awsserver "github.com/stackshy/cloudemu/server/aws"
"github.com/stackshy/cloudemu/v2"
awsserver "github.com/stackshy/cloudemu/v2/server/aws"
)

cloud := cloudemu.NewAWS()
Expand Down Expand Up @@ -53,8 +53,8 @@ import (
"github.com/Azure/azure-sdk-for-go/sdk/azcore/arm"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/cloud"
"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5"
"github.com/stackshy/cloudemu"
azureserver "github.com/stackshy/cloudemu/server/azure"
"github.com/stackshy/cloudemu/v2"
azureserver "github.com/stackshy/cloudemu/v2/server/azure"
)

cp := cloudemu.NewAzure()
Expand Down Expand Up @@ -91,8 +91,8 @@ client, _ := armcompute.NewVirtualMachinesClient("sub-1", fakeCred{}, opts)
```go
import (
gcpcompute "cloud.google.com/go/compute/apiv1"
"github.com/stackshy/cloudemu"
gcpserver "github.com/stackshy/cloudemu/server/gcp"
"github.com/stackshy/cloudemu/v2"
gcpserver "github.com/stackshy/cloudemu/v2/server/gcp"
"google.golang.org/api/option"
)

Expand Down Expand Up @@ -129,8 +129,8 @@ import (
databricks "github.com/databricks/databricks-sdk-go"
"github.com/databricks/databricks-sdk-go/config"
"github.com/databricks/databricks-sdk-go/service/compute"
"github.com/stackshy/cloudemu"
azureserver "github.com/stackshy/cloudemu/server/azure"
"github.com/stackshy/cloudemu/v2"
azureserver "github.com/stackshy/cloudemu/v2/server/azure"
)

cp := cloudemu.NewAzure()
Expand Down
12 changes: 6 additions & 6 deletions examples/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@ import (
"fmt"
"time"

"github.com/stackshy/cloudemu"
computedriver "github.com/stackshy/cloudemu/compute/driver"
dnsdriver "github.com/stackshy/cloudemu/dns/driver"
mondriver "github.com/stackshy/cloudemu/monitoring/driver"
netdriver "github.com/stackshy/cloudemu/networking/driver"
storagedriver "github.com/stackshy/cloudemu/storage/driver"
"github.com/stackshy/cloudemu/v2"
computedriver "github.com/stackshy/cloudemu/v2/services/compute/driver"
dnsdriver "github.com/stackshy/cloudemu/v2/services/dns/driver"
mondriver "github.com/stackshy/cloudemu/v2/services/monitoring/driver"
netdriver "github.com/stackshy/cloudemu/v2/services/networking/driver"
storagedriver "github.com/stackshy/cloudemu/v2/services/storage/driver"
)

func main() {
Expand Down
2 changes: 1 addition & 1 deletion chaos/chaos.go → features/chaos/chaos.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import (
"sync"
"time"

"github.com/stackshy/cloudemu/config"
"github.com/stackshy/cloudemu/v2/config"
)

// Effect is what a chaos scenario produces for a given call. Either field may
Expand Down
4 changes: 2 additions & 2 deletions chaos/chaos_test.go → features/chaos/chaos_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import (
"testing"
"time"

"github.com/stackshy/cloudemu/chaos"
"github.com/stackshy/cloudemu/config"
"github.com/stackshy/cloudemu/v2/config"
"github.com/stackshy/cloudemu/v2/features/chaos"
)

func TestNewWithNilClockUsesRealClock(t *testing.T) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ import (
awsconfig "github.com/aws/aws-sdk-go-v2/config"
"github.com/aws/aws-sdk-go-v2/credentials"
"github.com/aws/aws-sdk-go-v2/service/s3"
"github.com/stackshy/cloudemu"
"github.com/stackshy/cloudemu/chaos"
cloudemuConfig "github.com/stackshy/cloudemu/config"
awsserver "github.com/stackshy/cloudemu/server/aws"
"github.com/stackshy/cloudemu/v2"
cloudemuConfig "github.com/stackshy/cloudemu/v2/config"
"github.com/stackshy/cloudemu/v2/features/chaos"
awsserver "github.com/stackshy/cloudemu/v2/server/aws"
)

// TestSDKObservesChaos proves the central architectural promise: a real
Expand Down
File renamed without changes.
Loading
Loading