From 098db6ec1aeaefbc5a4e97fc301338459d2ce3a4 Mon Sep 17 00:00:00 2001 From: Ross Nelson Date: Tue, 4 Mar 2025 00:55:15 -0500 Subject: [PATCH] feat: add logging to CircuitBreaker and refactor interfaces - Introduced Logger interface and added logging to CircuitBreaker - Refactored Config to include Logger - Updated validateConfig to set default Logger if nil - Added Breaker and JetStream interfaces - Refactored Connector interface and related implementations - Updated unit tests to mock new interfaces and logging --- .gitignore | 1 + circuitbreaker/circuitbreaker.go | 62 +- messaging/natsjscm/natsjscm.go | 16 +- messaging/natsjsdlq/natsjsdlq_test.go | 5 +- messaging/natsjspub/natsjspub.go | 46 +- messaging/natsjspub/natsjspub_mcb_test.go | 35 + messaging/natsjspub/natsjspub_mcm_test.go | 82 ++ messaging/natsjspub/natsjspub_test.go | 148 +++ test.log | 1015 --------------------- 9 files changed, 353 insertions(+), 1057 deletions(-) create mode 100644 messaging/natsjspub/natsjspub_mcb_test.go create mode 100644 messaging/natsjspub/natsjspub_mcm_test.go create mode 100644 messaging/natsjspub/natsjspub_test.go delete mode 100644 test.log diff --git a/.gitignore b/.gitignore index 7e8f9df..a7519ab 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ coverage.out coverage-report.txt report.xml junit.xml +test.log /tmp/* /examples/tmp/* /bin/serve/docker/prometheus/data diff --git a/circuitbreaker/circuitbreaker.go b/circuitbreaker/circuitbreaker.go index 036ff87..3e4b579 100644 --- a/circuitbreaker/circuitbreaker.go +++ b/circuitbreaker/circuitbreaker.go @@ -29,11 +29,24 @@ func (s State) String() string { } } +type Logger interface { + Debug(...interface{}) +} + type Config struct { FailureThreshold int OpenTimeout time.Duration HalfOpenMaxCalls int OnStateChange func(from, to State) + Logger Logger +} + +type Breaker interface { + Allow() bool + GetState() State + RecordStart() bool + RecordResult(success bool) + Reset() } type CircuitBreaker struct { @@ -46,21 +59,31 @@ type CircuitBreaker struct { timer *time.Timer } +func NewDefault() (*CircuitBreaker, error) { + return New(Config{ + FailureThreshold: 5, + OpenTimeout: 5 * time.Second, + HalfOpenMaxCalls: 5, + }) +} + func New(config Config) (*CircuitBreaker, error) { - if err := validateConfig(config); err != nil { + if err := validateConfig(&config); err != nil { return nil, err } - logger.Debug("creating new circuit breaker", logger.Fields{ + breaker := &CircuitBreaker{ + config: config, + state: StateClosed, + } + + breaker.config.Logger.Debug("creating new circuit breaker", logger.Fields{ "failure_threshold": config.FailureThreshold, "open_timeout": config.OpenTimeout.String(), "half_open_max_calls": config.HalfOpenMaxCalls, }) - return &CircuitBreaker{ - config: config, - state: StateClosed, - }, nil + return breaker, nil } func (cb *CircuitBreaker) Allow() bool { @@ -115,7 +138,7 @@ func (cb *CircuitBreaker) RecordStart() bool { } cb.attempts++ - logger.Debug("attempt started", logger.Fields{ + cb.config.Logger.Debug("attempt started", logger.Fields{ "state": cb.state.String(), "attempts": cb.attempts, }) @@ -127,7 +150,7 @@ func (cb *CircuitBreaker) RecordResult(success bool) { cb.mutex.Lock() defer cb.mutex.Unlock() - logger.Debug("recording attempt result", logger.Fields{ + cb.config.Logger.Debug("recording attempt result", logger.Fields{ "success": success, "state": cb.state.String(), "attempts": cb.attempts, @@ -143,7 +166,7 @@ func (cb *CircuitBreaker) RecordResult(success bool) { switch cb.state { case StateHalfOpen: cb.successes++ - logger.Debug("recorded success in half-open state", logger.Fields{ + cb.config.Logger.Debug("recorded success in half-open state", logger.Fields{ "attempts": cb.attempts, "successes": cb.successes, "max_calls": cb.config.HalfOpenMaxCalls, @@ -153,7 +176,7 @@ func (cb *CircuitBreaker) RecordResult(success bool) { } case StateClosed: cb.failures = 0 - logger.Debug("recorded success in closed state", logger.Fields{ + cb.config.Logger.Debug("recorded success in closed state", logger.Fields{ "failures": cb.failures, }) } @@ -163,7 +186,7 @@ func (cb *CircuitBreaker) Reset() { cb.mutex.Lock() defer cb.mutex.Unlock() - logger.Debug("resetting circuit breaker", logger.Fields{ + cb.config.Logger.Debug("resetting circuit breaker", logger.Fields{ "from_state": cb.state.String(), }) @@ -180,7 +203,7 @@ func (cb *CircuitBreaker) Reset() { func (cb *CircuitBreaker) recordFailure() { cb.failures++ - logger.Debug("recorded failure", logger.Fields{ + cb.config.Logger.Debug("recorded failure", logger.Fields{ "state": cb.state.String(), "failures": cb.failures, "threshold": cb.config.FailureThreshold, @@ -197,7 +220,7 @@ func (cb *CircuitBreaker) recordFailure() { } func (cb *CircuitBreaker) openCircuit() { - logger.Debug("opening circuit", logger.Fields{ + cb.config.Logger.Debug("opening circuit", logger.Fields{ "from_state": cb.state.String(), "open_timeout": cb.config.OpenTimeout.String(), }) @@ -212,7 +235,7 @@ func (cb *CircuitBreaker) openCircuit() { cb.mutex.Lock() defer cb.mutex.Unlock() - logger.Debug("open timeout elapsed", logger.Fields{ + cb.config.Logger.Debug("open timeout elapsed", logger.Fields{ "current_state": cb.state.String(), }) @@ -232,7 +255,7 @@ func (cb *CircuitBreaker) transitionTo(newState State) { cb.attempts = 0 cb.successes = 0 - logger.Debug("state transition", logger.Fields{ + cb.config.Logger.Debug("state transition", logger.Fields{ "from_state": oldState.String(), "to_state": newState.String(), "attempts": cb.attempts, @@ -244,15 +267,22 @@ func (cb *CircuitBreaker) transitionTo(newState State) { } } -func validateConfig(config Config) error { +func validateConfig(config *Config) error { if config.FailureThreshold <= 0 { return fmt.Errorf("failure threshold must be greater than 0") } + if config.OpenTimeout <= 0 { return fmt.Errorf("open timeout must be greater than 0") } + if config.HalfOpenMaxCalls <= 0 { return fmt.Errorf("half-open max calls must be greater than 0") } + + if config.Logger == nil { + config.Logger = logger.New() + } + return nil } diff --git a/messaging/natsjscm/natsjscm.go b/messaging/natsjscm/natsjscm.go index 7aadb26..bbaf84f 100644 --- a/messaging/natsjscm/natsjscm.go +++ b/messaging/natsjscm/natsjscm.go @@ -21,8 +21,14 @@ type Connector interface { Disconnect() error IsConnected() bool GetConnection() *nats.Conn - GetJetStream() jetstream.JetStream - EnsureStream(ctx context.Context, config jetstream.StreamConfig) (jetstream.JetStream, error) + GetJetStream() JetStream + EnsureStream(ctx context.Context, config jetstream.StreamConfig) (JetStream, error) +} + +type JetStream interface { + Stream(ctx context.Context, name string) (jetstream.Stream, error) + CreateStream(ctx context.Context, config jetstream.StreamConfig) (jetstream.Stream, error) + PublishMsg(context.Context, *nats.Msg, ...jetstream.PublishOpt) (*jetstream.PubAck, error) } // ConnectionConfig holds the configuration for NATS connection @@ -45,7 +51,7 @@ type ConnectionManager struct { } // NewConnectionManager creates a new connection manager -func NewConnectionManager(config ConnectionConfig) (*ConnectionManager, error) { +func NewConnectionManager(config ConnectionConfig) (Connector, error) { if config.URL == "" { return nil, fmt.Errorf("NATS URL is required") } @@ -179,7 +185,7 @@ func (cm *ConnectionManager) GetConnection() *nats.Conn { } // GetJetStream returns the JetStream context -func (cm *ConnectionManager) GetJetStream() jetstream.JetStream { +func (cm *ConnectionManager) GetJetStream() JetStream { cm.mu.RLock() defer cm.mu.RUnlock() return cm.js @@ -189,7 +195,7 @@ func (cm *ConnectionManager) GetJetStream() jetstream.JetStream { func (cm *ConnectionManager) EnsureStream( ctx context.Context, config jetstream.StreamConfig, -) (jetstream.JetStream, error) { +) (JetStream, error) { cm.mu.RLock() js := cm.js cm.mu.RUnlock() diff --git a/messaging/natsjsdlq/natsjsdlq_test.go b/messaging/natsjsdlq/natsjsdlq_test.go index 0ed3e40..4f5b5e0 100644 --- a/messaging/natsjsdlq/natsjsdlq_test.go +++ b/messaging/natsjsdlq/natsjsdlq_test.go @@ -8,6 +8,7 @@ import ( "github.com/nats-io/nats.go" "github.com/nats-io/nats.go/jetstream" + "github.com/simiancreative/simiango/messaging/natsjscm" "github.com/simiancreative/simiango/messaging/natsjsdlq" "github.com/stretchr/testify/mock" "github.com/tj/assert" @@ -28,7 +29,7 @@ func (m *MockConnectionManager) GetConnection() *nats.Conn { return args.Get(0).(*nats.Conn) } -func (m *MockConnectionManager) GetJetStream() jetstream.JetStream { +func (m *MockConnectionManager) GetJetStream() natsjscm.JetStream { args := m.Called() return args.Get(0).(jetstream.JetStream) } @@ -36,7 +37,7 @@ func (m *MockConnectionManager) GetJetStream() jetstream.JetStream { func (m *MockConnectionManager) EnsureStream( ctx context.Context, config jetstream.StreamConfig, -) (jetstream.JetStream, error) { +) (natsjscm.JetStream, error) { args := m.Called(ctx, config) if args.Get(0) == nil { return nil, args.Error(1) diff --git a/messaging/natsjspub/natsjspub.go b/messaging/natsjspub/natsjspub.go index 949e2b4..586738e 100644 --- a/messaging/natsjspub/natsjspub.go +++ b/messaging/natsjspub/natsjspub.go @@ -29,6 +29,11 @@ type JsonPublisher interface { ) (*jetstream.PubAck, error) } +type PublishMulti interface { + JsonPublisher + Publisher +} + // Config holds publisher configuration type Config struct { // Stream name to publish to @@ -37,9 +42,6 @@ type Config struct { // Subject to publish on Subject string - // CircuitBreaker configuration (optional) - CircuitBreaker *circuitbreaker.Config - // Publish timeout (default 5s) Timeout time.Duration @@ -50,24 +52,30 @@ type Config struct { // Dependencies for the publisher type Dependencies struct { // ConnectionManager for NATS - ConnectionManager *natsjscm.ConnectionManager + Connector natsjscm.Connector + Breaker circuitbreaker.Breaker + Logger Logger } // Publisher is a JetStream publisher with circuit breaker capabilities type PublishManager struct { config Config - cm *natsjscm.ConnectionManager - cb *circuitbreaker.CircuitBreaker + cm natsjscm.Connector + cb circuitbreaker.Breaker log Logger } // NewPublisher creates a new JetStream publisher -func NewPublisher(deps Dependencies, config Config) (*PublishManager, error) { +func NewPublisher(deps Dependencies, config Config) (PublishMulti, error) { // Validation - if deps.ConnectionManager == nil { + if deps.Connector == nil { return nil, fmt.Errorf("connection manager is required") } + if deps.Breaker == nil { + deps.Breaker, _ = circuitbreaker.NewDefault() + } + if config.StreamName == "" { return nil, fmt.Errorf("stream name is required") } @@ -80,19 +88,15 @@ func NewPublisher(deps Dependencies, config Config) (*PublishManager, error) { config.Timeout = 5 * time.Second } - pub := &PublishManager{ - config: config, - cm: deps.ConnectionManager, - log: logger.New(), + if deps.Logger == nil { + deps.Logger = logger.New() } - // Initialize circuit breaker if configured - if config.CircuitBreaker != nil { - cb, err := circuitbreaker.New(*config.CircuitBreaker) - if err != nil { - return nil, fmt.Errorf("failed to create circuit breaker: %w", err) - } - pub.cb = cb + pub := &PublishManager{ + config: config, + cm: deps.Connector, + cb: deps.Breaker, + log: deps.Logger, } // Ensure the stream exists @@ -106,8 +110,11 @@ func NewPublisher(deps Dependencies, config Config) (*PublishManager, error) { // ensureStream makes sure the configured stream exists func (p *PublishManager) ensureStream(ctx context.Context) error { + p.log.Debugf("ensuring stream is connected") + // Get JetStream connection if !p.cm.IsConnected() { + p.log.Debugf("connecting to NATS") if err := p.cm.Connect(); err != nil { return fmt.Errorf("failed to connect to NATS: %w", err) } @@ -127,6 +134,7 @@ func (p *PublishManager) ensureStream(ctx context.Context) error { } // Ensure stream exists + p.log.Debugf("ensuring stream %s exists", p.config.StreamName) _, err := p.cm.EnsureStream(ctx, streamConfig) return err } diff --git a/messaging/natsjspub/natsjspub_mcb_test.go b/messaging/natsjspub/natsjspub_mcb_test.go new file mode 100644 index 0000000..dbd0744 --- /dev/null +++ b/messaging/natsjspub/natsjspub_mcb_test.go @@ -0,0 +1,35 @@ +package natsjspub_test + +import ( + "github.com/sanity-io/litter" + "github.com/simiancreative/simiango/circuitbreaker" + "github.com/stretchr/testify/mock" +) + +type MockCircuitBreaker struct { + mock.Mock +} + +func (m *MockCircuitBreaker) Allow() bool { + args := m.Called() + litter.Dump(args) + return args.Bool(0) +} + +func (m *MockCircuitBreaker) GetState() circuitbreaker.State { + args := m.Called() + return args.Get(0).(circuitbreaker.State) +} + +func (m *MockCircuitBreaker) RecordStart() bool { + args := m.Called() + return args.Bool(0) +} + +func (m *MockCircuitBreaker) RecordResult(success bool) { + m.Called(success) +} + +func (m *MockCircuitBreaker) Reset() { + m.Called() +} diff --git a/messaging/natsjspub/natsjspub_mcm_test.go b/messaging/natsjspub/natsjspub_mcm_test.go new file mode 100644 index 0000000..b658fc4 --- /dev/null +++ b/messaging/natsjspub/natsjspub_mcm_test.go @@ -0,0 +1,82 @@ +package natsjspub_test + +import ( + "context" + + "github.com/nats-io/nats.go" + "github.com/nats-io/nats.go/jetstream" + "github.com/simiancreative/simiango/messaging/natsjscm" + "github.com/stretchr/testify/mock" +) + +// Mock dependencies +type MockConnectionManager struct { + mock.Mock + jetstream natsjscm.JetStream +} + +func (m *MockConnectionManager) SetJetStream(jetstream natsjscm.JetStream) { + m.jetstream = jetstream +} + +func (m *MockConnectionManager) Connect() error { + args := m.Called() + return args.Error(0) +} + +func (m *MockConnectionManager) Disconnect() error { + args := m.Called() + return args.Error(0) +} + +func (m *MockConnectionManager) IsConnected() bool { + args := m.Called() + return args.Bool(0) +} + +func (m *MockConnectionManager) GetConnection() *nats.Conn { + args := m.Called() + return args.Get(0).(*nats.Conn) +} + +func (m *MockConnectionManager) GetJetStream() natsjscm.JetStream { + args := m.Called() + if js, ok := args.Get(0).(natsjscm.JetStream); ok { + return js + } + return nil +} + +func (m *MockConnectionManager) EnsureStream( + ctx context.Context, + cfg jetstream.StreamConfig, +) (natsjscm.JetStream, error) { + args := m.Called(ctx, cfg) + return args.Get(0).(*MockJetStream), args.Error(1) +} + +type MockJetStream struct { + mock.Mock +} + +func (m *MockJetStream) Stream(ctx context.Context, name string) (jetstream.Stream, error) { + args := m.Called(ctx, name) + return args.Get(0).(jetstream.Stream), args.Error(1) +} + +func (m *MockJetStream) CreateStream( + ctx context.Context, + cfg jetstream.StreamConfig, +) (jetstream.Stream, error) { + args := m.Called(ctx, cfg) + return args.Get(0).(jetstream.Stream), args.Error(1) +} + +func (m *MockJetStream) PublishMsg( + ctx context.Context, + msg *nats.Msg, + opts ...jetstream.PublishOpt, +) (*jetstream.PubAck, error) { + args := m.Called(ctx, msg, opts) + return args.Get(0).(*jetstream.PubAck), args.Error(1) +} diff --git a/messaging/natsjspub/natsjspub_test.go b/messaging/natsjspub/natsjspub_test.go new file mode 100644 index 0000000..ecea436 --- /dev/null +++ b/messaging/natsjspub/natsjspub_test.go @@ -0,0 +1,148 @@ +package natsjspub_test + +import ( + "context" + "testing" + "time" + + "github.com/nats-io/nats.go" + "github.com/nats-io/nats.go/jetstream" + "github.com/simiancreative/simiango/messaging/natsjspub" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" +) + +func TestNewPublisher(t *testing.T) { + mockCM := new(MockConnectionManager) + config := natsjspub.Config{ + StreamName: "test-stream", + Subject: "test-subject", + Timeout: 5 * time.Second, + } + + t.Run("success", func(t *testing.T) { + mockCM. + On("EnsureStream", mock.Anything, mock.Anything). + Return(new(MockJetStream), nil) + + mockCM. + On("IsConnected"). + Return(true) + + deps := natsjspub.Dependencies{ + Connector: mockCM, + } + + pub, err := natsjspub.NewPublisher(deps, config) + assert.NoError(t, err) + assert.NotNil(t, pub) + }) + + t.Run("missing connection manager", func(t *testing.T) { + deps := natsjspub.Dependencies{} + + pub, err := natsjspub.NewPublisher(deps, config) + assert.Error(t, err) + assert.Nil(t, pub) + }) + + t.Run("missing stream name", func(t *testing.T) { + config.StreamName = "" + deps := natsjspub.Dependencies{ + Connector: mockCM, + } + + pub, err := natsjspub.NewPublisher(deps, config) + assert.Error(t, err) + assert.Nil(t, pub) + }) +} + +type Mocks struct { + cm *MockConnectionManager + js *MockJetStream + cb *MockCircuitBreaker +} + +func createPublisher(t *testing.T) (natsjspub.PublishMulti, *Mocks) { + mocks := &Mocks{ + cm: new(MockConnectionManager), + js: new(MockJetStream), + cb: new(MockCircuitBreaker), + } + + mocks.cm.SetJetStream(mocks.js) + + config := natsjspub.Config{ + StreamName: "test-stream", + Subject: "test-subject", + Timeout: 5 * time.Second, + } + + // new publisher sets up the conection manager and stream + mocks.cm.On("IsConnected").Return(true) + mocks.cm.On("Connect").Return(nil) + mocks.cm.On("EnsureStream", mock.Anything, mock.Anything).Return(mocks.js, nil) + + pub, err := natsjspub.NewPublisher(natsjspub.Dependencies{ + Connector: mocks.cm, + Breaker: mocks.cb, + }, config) + assert.NoError(t, err) + + return pub, mocks +} + +func TestPublish(t *testing.T) { + + t.Run("success", func(t *testing.T) { + pub, mocks := createPublisher(t) + mocks.cb.On("Allow").Return(true) + mocks.cb.On("RecordStart").Return(true) + mocks.cm.On("GetJetStream").Return(mocks.js) + mocks.js. + On("PublishMsg", mock.Anything, mock.Anything, mock.Anything). + Return(&jetstream.PubAck{}, nil) + mocks.cb.On("RecordResult", mock.Anything) + + msg := &nats.Msg{Subject: "test-subject", Data: []byte("test")} + ack, err := pub.Publish(context.Background(), msg) + assert.NoError(t, err) + assert.NotNil(t, ack) + }) + + t.Run("circuit breaker open", func(t *testing.T) { + pub, mocks := createPublisher(t) + + mocks.cb.On("Allow").Return(false) + + msg := &nats.Msg{Subject: "test-subject", Data: []byte("test")} + ack, err := pub.Publish(context.Background(), msg) + assert.Error(t, err) + assert.Nil(t, ack) + }) + + t.Run("jetstream connection not available", func(t *testing.T) { + pub, mocks := createPublisher(t) + + mocks.cb.On("Allow").Return(true) + mocks.cb.On("RecordStart").Return(true) + mocks.cm.On("GetJetStream").Return(nil) + mocks.cb.On("RecordResult", mock.Anything) + + msg := &nats.Msg{Subject: "test-subject", Data: []byte("test")} + ack, err := pub.Publish(context.Background(), msg) + assert.Error(t, err) + assert.Nil(t, ack) + }) +} + +func TestPublishJSON(t *testing.T) { + t.Run("json marshal error", func(t *testing.T) { + pub, _ := createPublisher(t) + data := make(chan int) // non-serializable type + ack, err := pub.PublishJSON(context.Background(), data) + assert.Error(t, err) + assert.Nil(t, ack) + }) +} diff --git a/test.log b/test.log deleted file mode 100644 index e82cdbc..0000000 --- a/test.log +++ /dev/null @@ -1,1015 +0,0 @@ -? github.com/simiancreative/simiango/data/sql [no test files] -? github.com/simiancreative/simiango/data/sql/combinators [no test files] -=== RUN TestRetry -=== RUN TestRetry/successful_retry -{"level":"debug","msg":"RETRYING: attempt 1","time":"2025-03-03T09:34:40-05:00"} -{"level":"debug","msg":"RETRYING: attempt 2","time":"2025-03-03T09:34:41-05:00"} -=== RUN TestRetry/max_retries_exceeded -{"level":"debug","msg":"RETRYING: attempt 1","time":"2025-03-03T09:34:42-05:00"} -{"level":"debug","msg":"RETRYING: attempt 2","time":"2025-03-03T09:34:43-05:00"} ---- PASS: TestRetry (4.01s) - --- PASS: TestRetry/successful_retry (2.00s) - --- PASS: TestRetry/max_retries_exceeded (2.00s) -PASS -coverage: 3.8% of statements in ./... -ok github.com/simiancreative/simiango/backoff 5.630s coverage: 3.8% of statements in ./... -=== RUN TestCircuitBreaker -=== RUN TestCircuitBreaker/remains_closed_when_under_threshold -time="2025-03-03T09:34:40-05:00" level=debug msg="creating new circuit breaker" failure_threshold=3 half_open_max_calls=2 open_timeout=1s -time="2025-03-03T09:34:40-05:00" level=debug msg="attempt started" attempts=1 state=CLOSED -time="2025-03-03T09:34:40-05:00" level=debug msg="recording attempt result" attempts=1 failures=0 state=CLOSED success=false successes=0 -time="2025-03-03T09:34:40-05:00" level=debug msg="recorded failure" failures=1 state=CLOSED threshold=3 -time="2025-03-03T09:34:40-05:00" level=debug msg="attempt started" attempts=2 state=CLOSED -time="2025-03-03T09:34:40-05:00" level=debug msg="recording attempt result" attempts=2 failures=1 state=CLOSED success=false successes=0 -time="2025-03-03T09:34:40-05:00" level=debug msg="recorded failure" failures=2 state=CLOSED threshold=3 -time="2025-03-03T09:34:40-05:00" level=debug msg="circuit breaker allow check" allowed=true attempts=2 max_calls=2 state=CLOSED -=== RUN TestCircuitBreaker/opens_after_threshold_failures -time="2025-03-03T09:34:40-05:00" level=debug msg="creating new circuit breaker" failure_threshold=2 half_open_max_calls=2 open_timeout=1s -time="2025-03-03T09:34:40-05:00" level=debug msg="attempt started" attempts=1 state=CLOSED -time="2025-03-03T09:34:40-05:00" level=debug msg="recording attempt result" attempts=1 failures=0 state=CLOSED success=false successes=0 -time="2025-03-03T09:34:40-05:00" level=debug msg="recorded failure" failures=1 state=CLOSED threshold=2 -time="2025-03-03T09:34:40-05:00" level=debug msg="attempt started" attempts=2 state=CLOSED -time="2025-03-03T09:34:40-05:00" level=debug msg="recording attempt result" attempts=2 failures=1 state=CLOSED success=false successes=0 -time="2025-03-03T09:34:40-05:00" level=debug msg="recorded failure" failures=2 state=CLOSED threshold=2 -time="2025-03-03T09:34:40-05:00" level=debug msg="opening circuit" from_state=CLOSED open_timeout=1s -time="2025-03-03T09:34:40-05:00" level=debug msg="state transition" attempts=0 from_state=CLOSED successes=0 to_state=OPEN -time="2025-03-03T09:34:40-05:00" level=debug msg="attempt rejected - circuit open" state=OPEN -=== RUN TestCircuitBreaker/transitions_to_half-open_after_timeout -time="2025-03-03T09:34:40-05:00" level=debug msg="creating new circuit breaker" failure_threshold=2 half_open_max_calls=2 open_timeout=50ms -time="2025-03-03T09:34:40-05:00" level=debug msg="attempt started" attempts=1 state=CLOSED -time="2025-03-03T09:34:40-05:00" level=debug msg="recording attempt result" attempts=1 failures=0 state=CLOSED success=false successes=0 -time="2025-03-03T09:34:40-05:00" level=debug msg="recorded failure" failures=1 state=CLOSED threshold=2 -time="2025-03-03T09:34:40-05:00" level=debug msg="attempt started" attempts=2 state=CLOSED -time="2025-03-03T09:34:40-05:00" level=debug msg="recording attempt result" attempts=2 failures=1 state=CLOSED success=false successes=0 -time="2025-03-03T09:34:40-05:00" level=debug msg="recorded failure" failures=2 state=CLOSED threshold=2 -time="2025-03-03T09:34:40-05:00" level=debug msg="opening circuit" from_state=CLOSED open_timeout=50ms -time="2025-03-03T09:34:40-05:00" level=debug msg="state transition" attempts=0 from_state=CLOSED successes=0 to_state=OPEN -time="2025-03-03T09:34:40-05:00" level=debug msg="open timeout elapsed" current_state=OPEN -time="2025-03-03T09:34:40-05:00" level=debug msg="state transition" attempts=0 from_state=OPEN successes=0 to_state=HALF_OPEN -time="2025-03-03T09:34:40-05:00" level=debug msg="attempt started" attempts=1 state=HALF_OPEN -=== RUN TestCircuitBreaker/closes_after_successful_half-open_calls -time="2025-03-03T09:34:40-05:00" level=debug msg="creating new circuit breaker" failure_threshold=2 half_open_max_calls=2 open_timeout=50ms -time="2025-03-03T09:34:40-05:00" level=debug msg="attempt started" attempts=1 state=CLOSED -time="2025-03-03T09:34:40-05:00" level=debug msg="recording attempt result" attempts=1 failures=0 state=CLOSED success=false successes=0 -time="2025-03-03T09:34:40-05:00" level=debug msg="recorded failure" failures=1 state=CLOSED threshold=2 -time="2025-03-03T09:34:40-05:00" level=debug msg="attempt started" attempts=2 state=CLOSED -time="2025-03-03T09:34:40-05:00" level=debug msg="recording attempt result" attempts=2 failures=1 state=CLOSED success=false successes=0 -time="2025-03-03T09:34:40-05:00" level=debug msg="recorded failure" failures=2 state=CLOSED threshold=2 -time="2025-03-03T09:34:40-05:00" level=debug msg="opening circuit" from_state=CLOSED open_timeout=50ms -time="2025-03-03T09:34:40-05:00" level=debug msg="state transition" attempts=0 from_state=CLOSED successes=0 to_state=OPEN -time="2025-03-03T09:34:40-05:00" level=debug msg="open timeout elapsed" current_state=OPEN -time="2025-03-03T09:34:40-05:00" level=debug msg="state transition" attempts=0 from_state=OPEN successes=0 to_state=HALF_OPEN -time="2025-03-03T09:34:40-05:00" level=debug msg="attempt started" attempts=1 state=HALF_OPEN -time="2025-03-03T09:34:40-05:00" level=debug msg="recording attempt result" attempts=1 failures=2 state=HALF_OPEN success=true successes=0 -time="2025-03-03T09:34:40-05:00" level=debug msg="recorded success in half-open state" attempts=1 max_calls=2 successes=1 -time="2025-03-03T09:34:40-05:00" level=debug msg="attempt started" attempts=2 state=HALF_OPEN -time="2025-03-03T09:34:40-05:00" level=debug msg="recording attempt result" attempts=2 failures=2 state=HALF_OPEN success=true successes=1 -time="2025-03-03T09:34:40-05:00" level=debug msg="recorded success in half-open state" attempts=2 max_calls=2 successes=2 -time="2025-03-03T09:34:40-05:00" level=debug msg="state transition" attempts=0 from_state=HALF_OPEN successes=0 to_state=CLOSED -=== RUN TestCircuitBreaker/limits_calls_in_half-open_state -time="2025-03-03T09:34:40-05:00" level=debug msg="creating new circuit breaker" failure_threshold=2 half_open_max_calls=2 open_timeout=50ms -time="2025-03-03T09:34:40-05:00" level=debug msg="attempt started" attempts=1 state=CLOSED -time="2025-03-03T09:34:40-05:00" level=debug msg="recording attempt result" attempts=1 failures=0 state=CLOSED success=false successes=0 -time="2025-03-03T09:34:40-05:00" level=debug msg="recorded failure" failures=1 state=CLOSED threshold=2 -time="2025-03-03T09:34:40-05:00" level=debug msg="attempt started" attempts=2 state=CLOSED -time="2025-03-03T09:34:40-05:00" level=debug msg="recording attempt result" attempts=2 failures=1 state=CLOSED success=false successes=0 -time="2025-03-03T09:34:40-05:00" level=debug msg="recorded failure" failures=2 state=CLOSED threshold=2 -time="2025-03-03T09:34:40-05:00" level=debug msg="opening circuit" from_state=CLOSED open_timeout=50ms -time="2025-03-03T09:34:40-05:00" level=debug msg="state transition" attempts=0 from_state=CLOSED successes=0 to_state=OPEN -time="2025-03-03T09:34:41-05:00" level=debug msg="open timeout elapsed" current_state=OPEN -time="2025-03-03T09:34:41-05:00" level=debug msg="state transition" attempts=0 from_state=OPEN successes=0 to_state=HALF_OPEN -time="2025-03-03T09:34:41-05:00" level=debug msg="attempt started" attempts=1 state=HALF_OPEN -time="2025-03-03T09:34:41-05:00" level=debug msg="attempt started" attempts=2 state=HALF_OPEN -time="2025-03-03T09:34:41-05:00" level=debug msg="attempt rejected - max half-open calls reached" attempts=2 max_calls=2 -time="2025-03-03T09:34:41-05:00" level=debug msg="recording attempt result" attempts=2 failures=2 state=HALF_OPEN success=true successes=0 -time="2025-03-03T09:34:41-05:00" level=debug msg="recorded success in half-open state" attempts=2 max_calls=2 successes=1 -time="2025-03-03T09:34:41-05:00" level=debug msg="recording attempt result" attempts=2 failures=2 state=HALF_OPEN success=true successes=1 -time="2025-03-03T09:34:41-05:00" level=debug msg="recorded success in half-open state" attempts=2 max_calls=2 successes=2 -time="2025-03-03T09:34:41-05:00" level=debug msg="state transition" attempts=0 from_state=HALF_OPEN successes=0 to_state=CLOSED ---- PASS: TestCircuitBreaker (0.19s) - --- PASS: TestCircuitBreaker/remains_closed_when_under_threshold (0.00s) - --- PASS: TestCircuitBreaker/opens_after_threshold_failures (0.00s) - --- PASS: TestCircuitBreaker/transitions_to_half-open_after_timeout (0.06s) - --- PASS: TestCircuitBreaker/closes_after_successful_half-open_calls (0.06s) - --- PASS: TestCircuitBreaker/limits_calls_in_half-open_state (0.06s) -PASS -coverage: 5.0% of statements in ./... -time="2025-03-03T09:34:41-05:00" level=debug msg="open timeout elapsed" current_state=OPEN -time="2025-03-03T09:34:41-05:00" level=debug msg="state transition" attempts=0 from_state=OPEN successes=0 to_state=HALF_OPEN -ok github.com/simiancreative/simiango/circuitbreaker 2.240s coverage: 5.0% of statements in ./... -=== RUN TestRecoverAndThrow -=== RUN TestRecoverAndThrow/as_string -{"level":"error","msg":"\n\n=============== LOGGING STACK TRACE =====================\n\nError: 4edca9f6-0ff0-444c-aae1-201ebe7c73bc\nrecovered\ngithub.com/simiancreative/simiango/cli.Recover\n\t/Users/ross/code/simian/simiango/cli/cli.go:58\nruntime.gopanic\n\t/Users/ross/.asdf/installs/golang/1.21.7/packages/pkg/mod/golang.org/toolchain@v0.0.1-go1.22.10.darwin-arm64/src/runtime/panic.go:770\ngithub.com/simiancreative/simiango/cli_test.TestRecoverAndThrow.func1.1\n\t/Users/ross/code/simian/simiango/cli/cli_test.go:54\nruntime.goexit\n\t/Users/ross/.asdf/installs/golang/1.21.7/packages/pkg/mod/golang.org/toolchain@v0.0.1-go1.22.10.darwin-arm64/src/runtime/asm_arm64.s:1222\n\n=============== END LOGGING STACK TRACE =================\n\n\t\t","time":"2025-03-03T09:34:41-05:00"} -{"event_id":"e156f9b65dc4417db51e15728e6715e9","sent_at":"2025-03-03T09:34:41.347583-05:00","dsn":"http://publicKey@127.0.0.1:57868/1","sdk":{"name":"sentry.go","version":"0.31.1"},"trace":{"public_key":"publicKey","release":"b5bff38-dirty","sample_rate":"0.1","trace_id":"f58f2215154a01f69f5556f9054727cf"}} -{"type":"event","length":2195} -{"contexts":{"device":{"arch":"arm64","num_cpu":12},"os":{"name":"darwin"},"runtime":{"go_maxprocs":12,"go_numcgocalls":1,"go_numroutines":9,"name":"go","version":"go1.22.10 X:nocoverageredesign"},"trace":{"span_id":"4e08c010e5dc699b","trace_id":"f58f2215154a01f69f5556f9054727cf"}},"event_id":"e156f9b65dc4417db51e15728e6715e9","level":"fatal","platform":"go","release":"b5bff38-dirty","sdk":{"name":"sentry.go","version":"0.31.1","integrations":["ContextifyFrames","Environment","GlobalTags","IgnoreErrors","IgnoreTransactions","Modules"],"packages":[{"name":"sentry-go","version":"0.31.1"}]},"server_name":"Rosss-MacBook-Pro.local","user":{},"modules":{"":""},"exception":[{"type":"*errors.errorString","value":"4edca9f6-0ff0-444c-aae1-201ebe7c73bc","mechanism":{"type":"generic","exception_id":0,"is_exception_group":true}},{"type":"*errors.withMessage","value":"recovered: 4edca9f6-0ff0-444c-aae1-201ebe7c73bc","mechanism":{"type":"generic","parent_id":0,"exception_id":1,"is_exception_group":true}},{"type":"*errors.withStack","value":"recovered: 4edca9f6-0ff0-444c-aae1-201ebe7c73bc","stacktrace":{"frames":[{"function":"TestRecoverAndThrow.func1.1","module":"github.com/simiancreative/simiango/cli_test","abs_path":"/Users/ross/code/simian/simiango/cli/cli_test.go","lineno":54,"pre_context":["\t\t\t// Set up the Sentry client","\t\t\tsentry.Enable()","","\t\t\tgo func() {","\t\t\t\tdefer cli.Recover()"],"context_line":"\t\t\t\tpanic(tt.param)","post_context":["\t\t\t}()","","\t\t\tselect {","\t\t\tcase request := \u003c-handledRequests:","\t\t\t\tassert.Equal(t, \"/api/1/envelope/\", request.R.URL.Path)"],"in_app":true},{"function":"Recover","module":"github.com/simiancreative/simiango/cli","abs_path":"/Users/ross/code/simian/simiango/cli/cli.go","lineno":58,"pre_context":["\tif ok {","\t\terr = errors.Wrap(err, \"recovered\")","\t}","","\tif !ok {"],"context_line":"\t\terr = errors.Wrap(fmt.Errorf(\"%v\", val), \"recovered\")","post_context":["\t}","","\tprintStackTrace(err)","","\tsentry.CurrentHub().Recover(err)"],"in_app":true}]},"mechanism":{"type":"generic","parent_id":1,"exception_id":2,"is_exception_group":true}}],"timestamp":"2025-03-03T09:34:41.346154-05:00"} - -=== RUN TestRecoverAndThrow/as_error -{"level":"error","msg":"\n\n=============== LOGGING STACK TRACE =====================\n\nError: error: 4edca9f6-0ff0-444c-aae1-201ebe7c73bc\nrecovered\ngithub.com/simiancreative/simiango/cli.Recover\n\t/Users/ross/code/simian/simiango/cli/cli.go:54\nruntime.gopanic\n\t/Users/ross/.asdf/installs/golang/1.21.7/packages/pkg/mod/golang.org/toolchain@v0.0.1-go1.22.10.darwin-arm64/src/runtime/panic.go:770\ngithub.com/simiancreative/simiango/cli_test.TestRecoverAndThrow.func1.1\n\t/Users/ross/code/simian/simiango/cli/cli_test.go:54\nruntime.goexit\n\t/Users/ross/.asdf/installs/golang/1.21.7/packages/pkg/mod/golang.org/toolchain@v0.0.1-go1.22.10.darwin-arm64/src/runtime/asm_arm64.s:1222\n\n=============== END LOGGING STACK TRACE =================\n\n\t\t","time":"2025-03-03T09:34:41-05:00"} -{"event_id":"c88ac3f181f145348a3498a4b8bf29c5","sent_at":"2025-03-03T09:34:41.37523-05:00","dsn":"http://publicKey@127.0.0.1:57870/1","sdk":{"name":"sentry.go","version":"0.31.1"},"trace":{"public_key":"publicKey","release":"b5bff38-dirty","sample_rate":"0.1","trace_id":"f58f2215154a01f69f5556f9054727cf"}} -{"type":"event","length":2198} -{"contexts":{"device":{"arch":"arm64","num_cpu":12},"os":{"name":"darwin"},"runtime":{"go_maxprocs":12,"go_numcgocalls":1,"go_numroutines":14,"name":"go","version":"go1.22.10 X:nocoverageredesign"},"trace":{"span_id":"4e08c010e5dc699b","trace_id":"f58f2215154a01f69f5556f9054727cf"}},"event_id":"c88ac3f181f145348a3498a4b8bf29c5","level":"fatal","platform":"go","release":"b5bff38-dirty","sdk":{"name":"sentry.go","version":"0.31.1","integrations":["ContextifyFrames","Environment","GlobalTags","IgnoreErrors","IgnoreTransactions","Modules"],"packages":[{"name":"sentry-go","version":"0.31.1"}]},"server_name":"Rosss-MacBook-Pro.local","user":{},"modules":{"":""},"exception":[{"type":"*errors.errorString","value":"error: 4edca9f6-0ff0-444c-aae1-201ebe7c73bc","mechanism":{"type":"generic","exception_id":0,"is_exception_group":true}},{"type":"*errors.withMessage","value":"recovered: error: 4edca9f6-0ff0-444c-aae1-201ebe7c73bc","mechanism":{"type":"generic","parent_id":0,"exception_id":1,"is_exception_group":true}},{"type":"*errors.withStack","value":"recovered: error: 4edca9f6-0ff0-444c-aae1-201ebe7c73bc","stacktrace":{"frames":[{"function":"TestRecoverAndThrow.func1.1","module":"github.com/simiancreative/simiango/cli_test","abs_path":"/Users/ross/code/simian/simiango/cli/cli_test.go","lineno":54,"pre_context":["\t\t\t// Set up the Sentry client","\t\t\tsentry.Enable()","","\t\t\tgo func() {","\t\t\t\tdefer cli.Recover()"],"context_line":"\t\t\t\tpanic(tt.param)","post_context":["\t\t\t}()","","\t\t\tselect {","\t\t\tcase request := \u003c-handledRequests:","\t\t\t\tassert.Equal(t, \"/api/1/envelope/\", request.R.URL.Path)"],"in_app":true},{"function":"Recover","module":"github.com/simiancreative/simiango/cli","abs_path":"/Users/ross/code/simian/simiango/cli/cli.go","lineno":54,"pre_context":["\t\treturn","\t}","","\terr, ok := val.(error)","\tif ok {"],"context_line":"\t\terr = errors.Wrap(err, \"recovered\")","post_context":["\t}","","\tif !ok {","\t\terr = errors.Wrap(fmt.Errorf(\"%v\", val), \"recovered\")","\t}"],"in_app":true}]},"mechanism":{"type":"generic","parent_id":1,"exception_id":2,"is_exception_group":true}}],"timestamp":"2025-03-03T09:34:41.374748-05:00"} - ---- PASS: TestRecoverAndThrow (0.08s) - --- PASS: TestRecoverAndThrow/as_string (0.05s) - --- PASS: TestRecoverAndThrow/as_error (0.03s) -PASS -coverage: 4.8% of statements in ./... -ok github.com/simiancreative/simiango/cli 2.561s coverage: 4.8% of statements in ./... -=== RUN TestWithFlag ---- PASS: TestWithFlag (0.00s) -=== RUN TestWithFlagNoEnv -{"level":"error","msg":"No environment specified","time":"2025-03-03T09:34:41-05:00"} ---- PASS: TestWithFlagNoEnv (0.00s) -=== RUN TestEnable ---- PASS: TestEnable (0.00s) -=== RUN TestEnableNoEnv ---- PASS: TestEnableNoEnv (0.00s) -PASS -coverage: 3.5% of statements in ./... -ok github.com/simiancreative/simiango/config 2.887s coverage: 3.5% of statements in ./... -=== RUN TestNew ---- PASS: TestNew (0.00s) -PASS -coverage: 2.3% of statements in ./... -ok github.com/simiancreative/simiango/cryptkeeper 3.723s coverage: 2.3% of statements in ./... -=== RUN TestKeeper_SetConfigurator ---- PASS: TestKeeper_SetConfigurator (0.00s) -=== RUN TestKeeper_SetEncrypter ---- PASS: TestKeeper_SetEncrypter (0.00s) -=== RUN TestKeeper_SetHasher ---- PASS: TestKeeper_SetHasher (0.00s) -=== RUN TestKeeper_Encrypt ---- PASS: TestKeeper_Encrypt (0.00s) -=== RUN TestKeeper_Decrypt ---- PASS: TestKeeper_Decrypt (0.00s) -=== RUN TestKeeper_Hash ---- PASS: TestKeeper_Hash (0.00s) -=== RUN TestKeeper_Verify ---- PASS: TestKeeper_Verify (0.00s) -PASS -coverage: 2.4% of statements in ./... -ok github.com/simiancreative/simiango/cryptkeeper/keepers 3.301s coverage: 2.4% of statements in ./... -=== RUN TestSetup ---- PASS: TestSetup (0.00s) -=== RUN TestEncrypt ---- PASS: TestEncrypt (0.00s) -=== RUN TestDecrypt ---- PASS: TestDecrypt (0.00s) -PASS -coverage: 4.5% of statements in ./... -ok github.com/simiancreative/simiango/cryptkeeper/keepers/aes 4.113s coverage: 4.5% of statements in ./... -? github.com/simiancreative/simiango/messaging/amqp [no test files] -? github.com/simiancreative/simiango/messaging/kafka [no test files] -=== RUN TestHash ---- PASS: TestHash (0.64s) -=== RUN TestVerify ---- PASS: TestVerify (1.90s) -PASS -coverage: 2.0% of statements in ./... -ok github.com/simiancreative/simiango/cryptkeeper/keepers/bcrypt 7.041s coverage: 2.0% of statements in ./... -=== RUN TestPGP ---- PASS: TestPGP (1.54s) -=== RUN TestPGPErr ---- PASS: TestPGPErr (0.00s) -PASS -coverage: 3.3% of statements in ./... -ok github.com/simiancreative/simiango/cryptkeeper/keepers/pgp 7.350s coverage: 3.3% of statements in ./... -=== RUN TestQueryX ---- PASS: TestQueryX (0.00s) -PASS -coverage: 2.3% of statements in ./... -ok github.com/simiancreative/simiango/data/mssql 5.374s coverage: 2.3% of statements in ./... -=== RUN TestQueryX ---- PASS: TestQueryX (0.00s) -PASS -coverage: 2.3% of statements in ./... -ok github.com/simiancreative/simiango/data/mysql 6.248s coverage: 2.3% of statements in ./... -=== RUN TestQueryX ---- PASS: TestQueryX (0.00s) -PASS -coverage: 2.3% of statements in ./... -ok github.com/simiancreative/simiango/data/pg 4.972s coverage: 2.3% of statements in ./... -=== RUN TestClientGet ---- PASS: TestClientGet (0.00s) -=== RUN TestClientSet ---- PASS: TestClientSet (0.00s) -=== RUN TestClientExists ---- PASS: TestClientExists (0.00s) -=== RUN TestClientDel ---- PASS: TestClientDel (0.00s) -PASS -coverage: 2.3% of statements in ./... -ok github.com/simiancreative/simiango/data/redis 3.670s coverage: 2.3% of statements in ./... -=== RUN TestRegister ---- PASS: TestRegister (0.00s) -PASS -coverage: 1.9% of statements in ./... -ok github.com/simiancreative/simiango/data/redis/mock 3.788s coverage: 1.9% of statements in ./... -=== RUN TestCreate -"SELECT `products`.* FROM `products` WHERE (`id` = 456)" ---- PASS: TestCreate (0.00s) -=== RUN TestDelete ---- PASS: TestDelete (0.00s) -=== RUN TestOne ---- PASS: TestOne (0.00s) -=== RUN TestAugmentOne ---- PASS: TestAugmentOne (0.00s) -=== RUN TestPage ---- PASS: TestPage (0.00s) -=== RUN TestColumns ---- PASS: TestColumns (0.00s) -=== RUN TestOrder ---- PASS: TestOrder (0.00s) -=== RUN TestFilters ---- PASS: TestFilters (0.00s) -=== RUN TestAugmentListQuery ---- PASS: TestAugmentListQuery (0.00s) -=== RUN TestPageFromReq ---- PASS: TestPageFromReq (0.00s) -=== RUN TestPageFromReqNoOrder ---- PASS: TestPageFromReqNoOrder (0.00s) -=== RUN TestUpdate -"SELECT `products`.* FROM `products` WHERE (`id` = 456)" ---- PASS: TestUpdate (0.00s) -PASS -coverage: 9.6% of statements in ./... -ok github.com/simiancreative/simiango/data/sql/crud 3.315s coverage: 9.6% of statements in ./... -=== RUN TestScan ---- PASS: TestScan (0.00s) -=== RUN TestScanFail ---- PASS: TestScanFail (0.00s) -=== RUN TestMarshall ---- PASS: TestMarshall (0.00s) -=== RUN TestUnMarshall ---- PASS: TestUnMarshall (0.00s) -PASS -coverage: 6.1% of statements in ./... -ok github.com/simiancreative/simiango/data/sql/nulls 3.608s coverage: 6.1% of statements in ./... -=== RUN TestPage ---- PASS: TestPage (0.00s) -PASS -coverage: 4.3% of statements in ./... -ok github.com/simiancreative/simiango/data/sql/pagination 3.826s coverage: 4.3% of statements in ./... -? github.com/simiancreative/simiango/simian-go [no test files] -? github.com/simiancreative/simiango/simian-go/app/cryptkeeper [no test files] -? github.com/simiancreative/simiango/simian-go/app [no test files] -? github.com/simiancreative/simiango/simian-go/app/cryptkeeper/encrypt [no test files] -? github.com/simiancreative/simiango/simian-go/app/gen [no test files] -? github.com/simiancreative/simiango/simian-go/app/cryptkeeper/decrypt [no test files] -? github.com/simiancreative/simiango/simian-go/app/gen/service [no test files] -? github.com/simiancreative/simiango/simian-go/app/meta [no test files] -? github.com/simiancreative/simiango/simian-go/app/token [no test files] -? github.com/simiancreative/simiango/simian-go/app/token/decode [no test files] -? github.com/simiancreative/simiango/simian-go/app/token/generate [no test files] -? github.com/simiancreative/simiango/simian-go/app/meta/uuid [no test files] -? github.com/simiancreative/simiango/stats/prometheus [no test files] -? github.com/simiancreative/simiango/simian-go/app/token/test [no test files] -=== RUN TestUnsafeSelect ---- PASS: TestUnsafeSelect (0.00s) -=== RUN TestUnsafeGet ---- PASS: TestUnsafeGet (0.00s) -=== RUN TestUnsafeResultaddItem ---- PASS: TestUnsafeResultaddItem (0.00s) -=== RUN TestUnsafeCoerceBIGINT ---- PASS: TestUnsafeCoerceBIGINT (0.00s) -=== RUN TestUnsafeCoerceDECIMAL ---- PASS: TestUnsafeCoerceDECIMAL (0.00s) -=== RUN TestUnsafeCoerceVARCHAR ---- PASS: TestUnsafeCoerceVARCHAR (0.00s) -=== RUN TestUnsafeCoerceUNKNOWN ---- PASS: TestUnsafeCoerceUNKNOWN (0.00s) -PASS -coverage: 3.9% of statements in ./... -ok github.com/simiancreative/simiango/data/sql/unsafe 3.811s coverage: 3.9% of statements in ./... -=== RUN TestMock ---- PASS: TestMock (0.00s) -PASS -coverage: 2.1% of statements in ./... -ok github.com/simiancreative/simiango/logger 3.446s coverage: 2.1% of statements in ./... -? github.com/simiancreative/simiango/timeutils [no test files] -=== RUN TestNewConnectionManager -=== RUN TestNewConnectionManager/Valid_configuration -=== RUN TestNewConnectionManager/Missing_URL -=== RUN TestNewConnectionManager/With_custom_logger -=== RUN TestNewConnectionManager/With_custom_JetStream_domain -=== RUN TestNewConnectionManager/Zero_reconnect_wait_should_use_default -=== RUN TestNewConnectionManager/With_NATS_options ---- PASS: TestNewConnectionManager (0.00s) - --- PASS: TestNewConnectionManager/Valid_configuration (0.00s) - --- PASS: TestNewConnectionManager/Missing_URL (0.00s) - --- PASS: TestNewConnectionManager/With_custom_logger (0.00s) - --- PASS: TestNewConnectionManager/With_custom_JetStream_domain (0.00s) - --- PASS: TestNewConnectionManager/Zero_reconnect_wait_should_use_default (0.00s) - --- PASS: TestNewConnectionManager/With_NATS_options (0.00s) -=== RUN TestConnectionLifecycle -=== RUN TestConnectionLifecycle/Connect_and_check_status -natsjscm.ConnectionConfig{ - URL: "localhost:57895", - Options: []nats.Option{ - nats.Option, - }, - Logger: &logrus.Logger{ - Out: &os.File{}, - Hooks: logrus.LevelHooks{}, - Formatter: &logrus.JSONFormatter{ - TimestampFormat: "", - DisableTimestamp: false, - DisableHTMLEscape: false, - DataKey: "", - FieldMap: logrus.FieldMap(nil), - CallerPrettyfier: , - PrettyPrint: false, - }, - ReportCaller: false, - Level: 5, - ExitFunc: os.Exit, - BufferPool: nil, - }, - ReconnectWait: 100000000, - JetStreamDomain: "", -} -=== RUN TestConnectionLifecycle/Reference_counting_in_connect/disconnect -natsjscm.ConnectionConfig{ - URL: "localhost:57895", - Options: []nats.Option{ - nats.Option, - }, - Logger: &logrus.Logger{ - Out: &os.File{}, - Hooks: logrus.LevelHooks{}, - Formatter: &logrus.JSONFormatter{ - TimestampFormat: "", - DisableTimestamp: false, - DisableHTMLEscape: false, - DataKey: "", - FieldMap: logrus.FieldMap(nil), - CallerPrettyfier: , - PrettyPrint: false, - }, - ReportCaller: false, - Level: 5, - ExitFunc: os.Exit, - BufferPool: nil, - }, - ReconnectWait: 100000000, - JetStreamDomain: "", -} ---- PASS: TestConnectionLifecycle (0.04s) - --- PASS: TestConnectionLifecycle/Connect_and_check_status (0.01s) - --- PASS: TestConnectionLifecycle/Reference_counting_in_connect/disconnect (0.00s) -=== RUN TestEnsureStream -natsjscm.ConnectionConfig{ - URL: "localhost:57901", - Options: []nats.Option{ - nats.Option, - }, - Logger: &logrus.Logger{ - Out: &os.File{}, - Hooks: logrus.LevelHooks{}, - Formatter: &logrus.JSONFormatter{ - TimestampFormat: "", - DisableTimestamp: false, - DisableHTMLEscape: false, - DataKey: "", - FieldMap: logrus.FieldMap(nil), - CallerPrettyfier: , - PrettyPrint: false, - }, - ReportCaller: false, - Level: 5, - ExitFunc: os.Exit, - BufferPool: nil, - }, - ReconnectWait: 100000000, - JetStreamDomain: "", -} -=== RUN TestEnsureStream/Create_new_stream -=== RUN TestEnsureStream/Get_existing_stream -=== RUN TestEnsureStream/Create_stream_with_invalid_config ---- PASS: TestEnsureStream (0.04s) - --- PASS: TestEnsureStream/Create_new_stream (0.00s) - --- PASS: TestEnsureStream/Get_existing_stream (0.00s) - --- PASS: TestEnsureStream/Create_stream_with_invalid_config (0.00s) -=== RUN TestConnectionEvents -natsjscm.ConnectionConfig{ - URL: "localhost:57904", - Options: []nats.Option{ - nats.Option, - }, - Logger: &natsjscm_test.mockLogger{}, - ReconnectWait: 100000000, - JetStreamDomain: "", -} ---- PASS: TestConnectionEvents (2.16s) -PASS -coverage: 4.8% of statements in ./... -ok github.com/simiancreative/simiango/messaging/natsjscm 5.468s coverage: 4.8% of statements in ./... -=== RUN TestNewHandler -=== RUN TestNewHandler/valid_configuration -=== RUN TestNewHandler/missing_jetstream -=== RUN TestNewHandler/missing_required_config ---- PASS: TestNewHandler (0.00s) - --- PASS: TestNewHandler/valid_configuration (0.00s) - --- PASS: TestNewHandler/missing_jetstream (0.00s) - --- PASS: TestNewHandler/missing_required_config (0.00s) -=== RUN TestHandlerPublishMessage -=== RUN TestHandlerPublishMessage/successful_publish -=== RUN TestHandlerPublishMessage/publish_with_no_headers -=== RUN TestHandlerPublishMessage/publish_error ---- PASS: TestHandlerPublishMessage (0.00s) - --- PASS: TestHandlerPublishMessage/successful_publish (0.00s) - --- PASS: TestHandlerPublishMessage/publish_with_no_headers (0.00s) - --- PASS: TestHandlerPublishMessage/publish_error (0.00s) -=== RUN TestHandlerShouldDLQ -=== RUN TestHandlerShouldDLQ/should_dlq_when_deliveries_exceeded -=== RUN TestHandlerShouldDLQ/should_not_dlq_when_under_max_deliveries -=== RUN TestHandlerShouldDLQ/should_not_dlq_on_metadata_error ---- PASS: TestHandlerShouldDLQ (0.00s) - --- PASS: TestHandlerShouldDLQ/should_dlq_when_deliveries_exceeded (0.00s) - --- PASS: TestHandlerShouldDLQ/should_not_dlq_when_under_max_deliveries (0.00s) - --- PASS: TestHandlerShouldDLQ/should_not_dlq_on_metadata_error (0.00s) -PASS -coverage: 3.4% of statements in ./... -ok github.com/simiancreative/simiango/messaging/natsjsdlq 2.691s coverage: 3.4% of statements in ./... -=== RUN TestID ---- PASS: TestID (0.00s) -=== RUN TestGetDurationMilliseconds ---- PASS: TestGetDurationMilliseconds (0.00s) -=== RUN TestRescuePanic -{"context":"test_context","level":"error","msg":"(Test panic) caused panic and was recovered","request_id":"test_id","stack":"/Users/ross/.asdf/installs/golang/1.21.7/packages/pkg/mod/golang.org/toolchain@v0.0.1-go1.22.10.darwin-arm64/src/runtime/panic.go:770 (0x1023e1853)gopanic: fn()/Users/ross/code/simian/simiango/meta/rescue_test.go:20 (0x102c015ab)TestRescuePanic: panic(\"Test panic\")/Users/ross/.asdf/installs/golang/1.21.7/packages/pkg/mod/golang.org/toolchain@v0.0.1-go1.22.10.darwin-arm64/src/testing/testing.go:1689 (0x102531ff3)tRunner: fn(t)/Users/ross/.asdf/installs/golang/1.21.7/packages/pkg/mod/golang.org/toolchain@v0.0.1-go1.22.10.darwin-arm64/src/runtime/asm_arm64.s:1222 (0x102421113)goexit: MOVD\tR0, R0\t// NOP","time":"2025-03-03T09:34:49-05:00"} ---- PASS: TestRescuePanic (0.00s) -=== RUN TestGinRecovery -[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached. - -[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production. - - using env: export GIN_MODE=release - - using code: gin.SetMode(gin.ReleaseMode) - -[GIN-debug] GET /test --> github.com/simiancreative/simiango/meta.TestGinRecovery.func2 (4 handlers) -[GIN] 2025/03/03 - 09:34:49 | 200 | 110.792µs | | GET "/test" ---- PASS: TestGinRecovery (0.00s) -=== RUN TestRecoverGinPanic -[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached. - -[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production. - - using env: export GIN_MODE=release - - using code: gin.SetMode(gin.ReleaseMode) - -[GIN-debug] GET /test --> github.com/simiancreative/simiango/meta.TestRecoverGinPanic.func2 (4 handlers) -{"level":"error","msg":"Test error","request":["GET /test HTTP/1.1","",""],"request_id":null,"stack":["/Users/ross/code/simian/simiango/meta/rescue_test.go:49 (0x102c02717)","TestRecoverGinPanic.func1: panic(errors.New(\"Test error\"))","/Users/ross/.asdf/installs/golang/1.21.7/packages/pkg/mod/github.com/gin-gonic/gin@v1.10.0/context.go:185 (0x102bcb30b)","(*Context).Next: c.handlers[c.index](c)","/Users/ross/.asdf/installs/golang/1.21.7/packages/pkg/mod/github.com/gin-gonic/gin@v1.10.0/recovery.go:102 (0x102bcb29c)","CustomRecoveryWithWriter.func1: c.Next()","/Users/ross/.asdf/installs/golang/1.21.7/packages/pkg/mod/github.com/gin-gonic/gin@v1.10.0/context.go:185 (0x102bca1fb)","(*Context).Next: c.handlers[c.index](c)","/Users/ross/.asdf/installs/golang/1.21.7/packages/pkg/mod/github.com/gin-gonic/gin@v1.10.0/logger.go:249 (0x102bca19c)","LoggerWithConfig.func1: c.Next()","/Users/ross/.asdf/installs/golang/1.21.7/packages/pkg/mod/github.com/gin-gonic/gin@v1.10.0/context.go:185 (0x102bc8eef)","(*Context).Next: c.handlers[c.index](c)","/Users/ross/.asdf/installs/golang/1.21.7/packages/pkg/mod/github.com/gin-gonic/gin@v1.10.0/gin.go:633 (0x102bc89f4)","(*Engine).handleHTTPRequest: c.Next()","/Users/ross/.asdf/installs/golang/1.21.7/packages/pkg/mod/github.com/gin-gonic/gin@v1.10.0/gin.go:589 (0x102bc8153)","(*Engine).ServeHTTP: engine.handleHTTPRequest(c)","/Users/ross/code/simian/simiango/meta/rescue_test.go:57 (0x102c01b3b)","TestRecoverGinPanic: r.ServeHTTP(w, req)","/Users/ross/.asdf/installs/golang/1.21.7/packages/pkg/mod/golang.org/toolchain@v0.0.1-go1.22.10.darwin-arm64/src/testing/testing.go:1689 (0x102531ff3)","tRunner: fn(t)","/Users/ross/.asdf/installs/golang/1.21.7/packages/pkg/mod/golang.org/toolchain@v0.0.1-go1.22.10.darwin-arm64/src/runtime/asm_arm64.s:1222 (0x102421113)","goexit: MOVD\tR0, R0\t// NOP"],"time":"2025-03-03T09:34:49-05:00"} -[GIN] 2025/03/03 - 09:34:49 | 200 | 1.346334ms | | GET "/test" ---- PASS: TestRecoverGinPanic (0.00s) -=== RUN TestRecoverGinPanic_BrokenPipe -[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached. - -[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production. - - using env: export GIN_MODE=release - - using code: gin.SetMode(gin.ReleaseMode) - -[GIN-debug] GET /test --> github.com/simiancreative/simiango/meta.TestRecoverGinPanic_BrokenPipe.func2 (4 handlers) -{"level":"error","msg":": : broken pipe","request":["GET /test HTTP/1.1","",""],"request_id":null,"stack":["/Users/ross/code/simian/simiango/meta/rescue_test.go:72 (0x102c023eb)","TestRecoverGinPanic_BrokenPipe.func1: panic(\u0026net.OpError{Err: \u0026os.SyscallError{Err: errors.New(\"broken pipe\")}})","/Users/ross/.asdf/installs/golang/1.21.7/packages/pkg/mod/github.com/gin-gonic/gin@v1.10.0/context.go:185 (0x102bcb30b)","(*Context).Next: c.handlers[c.index](c)","/Users/ross/.asdf/installs/golang/1.21.7/packages/pkg/mod/github.com/gin-gonic/gin@v1.10.0/recovery.go:102 (0x102bcb29c)","CustomRecoveryWithWriter.func1: c.Next()","/Users/ross/.asdf/installs/golang/1.21.7/packages/pkg/mod/github.com/gin-gonic/gin@v1.10.0/context.go:185 (0x102bca1fb)","(*Context).Next: c.handlers[c.index](c)","/Users/ross/.asdf/installs/golang/1.21.7/packages/pkg/mod/github.com/gin-gonic/gin@v1.10.0/logger.go:249 (0x102bca19c)","LoggerWithConfig.func1: c.Next()","/Users/ross/.asdf/installs/golang/1.21.7/packages/pkg/mod/github.com/gin-gonic/gin@v1.10.0/context.go:185 (0x102bc8eef)","(*Context).Next: c.handlers[c.index](c)","/Users/ross/.asdf/installs/golang/1.21.7/packages/pkg/mod/github.com/gin-gonic/gin@v1.10.0/gin.go:633 (0x102bc89f4)","(*Engine).handleHTTPRequest: c.Next()","/Users/ross/.asdf/installs/golang/1.21.7/packages/pkg/mod/github.com/gin-gonic/gin@v1.10.0/gin.go:589 (0x102bc8153)","(*Engine).ServeHTTP: engine.handleHTTPRequest(c)","/Users/ross/code/simian/simiango/meta/rescue_test.go:80 (0x102c01deb)","TestRecoverGinPanic_BrokenPipe: r.ServeHTTP(w, req)","/Users/ross/.asdf/installs/golang/1.21.7/packages/pkg/mod/golang.org/toolchain@v0.0.1-go1.22.10.darwin-arm64/src/testing/testing.go:1689 (0x102531ff3)","tRunner: fn(t)","/Users/ross/.asdf/installs/golang/1.21.7/packages/pkg/mod/golang.org/toolchain@v0.0.1-go1.22.10.darwin-arm64/src/runtime/asm_arm64.s:1222 (0x102421113)","goexit: MOVD\tR0, R0\t// NOP"],"time":"2025-03-03T09:34:49-05:00"} -[GIN] 2025/03/03 - 09:34:49 | 500 | 999.292µs | | GET "/test" -Error #01: : : broken pipe ---- PASS: TestRecoverGinPanic_BrokenPipe (0.00s) -=== RUN TestStack ---- PASS: TestStack (0.00s) -=== RUN TestStackAsBuf ---- PASS: TestStackAsBuf (0.00s) -=== RUN TestSource ---- PASS: TestSource (0.00s) -=== RUN TestFunction ---- PASS: TestFunction (0.00s) -PASS -coverage: 5.2% of statements in ./... -ok github.com/simiancreative/simiango/meta 3.400s coverage: 5.2% of statements in ./... -=== RUN TestAssignable ---- PASS: TestAssignable (0.00s) -PASS -coverage: 2.5% of statements in ./... -ok github.com/simiancreative/simiango/meta/assign 3.522s coverage: 2.5% of statements in ./... -=== RUN TestHandleError -=== RUN TestHandleError/With_nil_hub -=== RUN TestHandleError/With_scopeFunc ---- PASS: TestHandleError (0.00s) - --- PASS: TestHandleError/With_nil_hub (0.00s) - --- PASS: TestHandleError/With_scopeFunc (0.00s) -=== RUN TestGinCaptureError -=== RUN TestGinCaptureError/sentryScopeFunc_is_not_ok ---- PASS: TestGinCaptureError (0.00s) - --- PASS: TestGinCaptureError/sentryScopeFunc_is_not_ok (0.00s) -=== RUN TestScopeFunctionError -=== RUN TestScopeFunctionError/scopeFunction_is_not_ok ---- PASS: TestScopeFunctionError (0.00s) - --- PASS: TestScopeFunctionError/scopeFunction_is_not_ok (0.00s) -=== RUN TestEnable -=== RUN TestEnable/Missing_DSN -{"level":"warning","msg":"SENTRY_DSN is not set","time":"2025-03-03T09:34:50-05:00"} -=== RUN TestEnable/Init_error -{"level":"warning","msg":"Sentry initialization failed: [Sentry] DsnParseError: invalid scheme","time":"2025-03-03T09:34:50-05:00"} -=== RUN TestEnable/Valid_case ---- PASS: TestEnable (0.03s) - --- PASS: TestEnable/Missing_DSN (0.00s) - --- PASS: TestEnable/Init_error (0.03s) - --- PASS: TestEnable/Valid_case (0.00s) -=== RUN TestRecoverAndThrow ---- PASS: TestRecoverAndThrow (0.16s) -PASS -coverage: 3.7% of statements in ./... -ok github.com/simiancreative/simiango/monitoring/sentry 3.694s coverage: 3.7% of statements in ./... -=== RUN TestErrorMiddleware -=== RUN TestErrorMiddleware/no_errors -=== RUN TestErrorMiddleware/with_errors ---- PASS: TestErrorMiddleware (0.00s) - --- PASS: TestErrorMiddleware/no_errors (0.00s) - --- PASS: TestErrorMiddleware/with_errors (0.00s) -=== RUN TestParseRequest ---- PASS: TestParseRequest (0.00s) -=== RUN TestServiceResult ---- PASS: TestServiceResult (0.00s) -=== RUN TestServiceResultNilPointer ---- PASS: TestServiceResultNilPointer (0.00s) -=== RUN TestDirectService ---- PASS: TestDirectService (0.00s) -=== RUN TestParseBody -=== RUN TestParseBody/when_config.Input_is_nil -=== RUN TestParseBody/when_config.Input_is_not_nil_and_body_parsing_is_successful -=== RUN TestParseBody/when_config.Input_is_not_nil_and_body_parsing_fails ---- PASS: TestParseBody (0.00s) - --- PASS: TestParseBody/when_config.Input_is_nil (0.00s) - --- PASS: TestParseBody/when_config.Input_is_not_nil_and_body_parsing_is_successful (0.00s) - --- PASS: TestParseBody/when_config.Input_is_not_nil_and_body_parsing_fails (0.00s) -=== RUN TestUtilsHeaders ---- PASS: TestUtilsHeaders (0.00s) -=== RUN TestUtilsParams ---- PASS: TestUtilsParams (0.00s) -=== RUN TestHandleError ---- PASS: TestHandleError (0.00s) -=== RUN TestHandleErrorOK ---- PASS: TestHandleErrorOK (0.00s) -=== RUN TestHandleAfterPass ---- PASS: TestHandleAfterPass (0.00s) -=== RUN TestHandleAfterCall ---- PASS: TestHandleAfterCall (0.00s) -=== RUN TestHandleRecovery ---- PASS: TestHandleRecovery (0.00s) -=== RUN TestHandleErrorResp ---- PASS: TestHandleErrorResp (0.00s) -=== RUN TestHandleErrorRespNil ---- PASS: TestHandleErrorRespNil (0.00s) -=== RUN TestHandleErrorRespStatusLessThan500 ---- PASS: TestHandleErrorRespStatusLessThan500 (0.00s) -PASS -coverage: 5.1% of statements in ./... -ok github.com/simiancreative/simiango/server 3.888s coverage: 5.1% of statements in ./... -=== RUN TestToContentResponse ---- PASS: TestToContentResponse (0.00s) -=== RUN TestToContentResponseNotSlice ---- PASS: TestToContentResponseNotSlice (0.00s) -=== RUN TestToContentResponseTotalPages ---- PASS: TestToContentResponseTotalPages (0.00s) -=== RUN TestHeaders ---- PASS: TestHeaders (0.00s) -=== RUN TestRawParams ---- PASS: TestRawParams (0.00s) -=== RUN TestToResultError ---- PASS: TestToResultError (0.00s) -PASS -coverage: 4.1% of statements in ./... -ok github.com/simiancreative/simiango/service 4.074s coverage: 4.1% of statements in ./... -=== RUN TestCatchSig -{"level":"info","msg":"Sig: begin shutdown (interrupt)","time":"2025-03-03T09:34:52-05:00"} -{"level":"info","msg":"Sig: shutdown complete","time":"2025-03-03T09:34:52-05:00"} ---- PASS: TestCatchSig (1.00s) -PASS -coverage: 3.4% of statements in ./... -ok github.com/simiancreative/simiango/sig 5.338s coverage: 3.4% of statements in ./... -=== RUN TestStart -2025/03/03 09:34:52 INFO Starting DevServer ExePath /var/folders/50/3__098sx6p15jz_0m0yp3m_r0000gn/T/temporal-cli-go-sdk-1.31.0 Args [server start-dev --ip 127.0.0.1 --port 57916 --namespace default --dynamic-config-value frontend.enableServerVersionCheck=false --headless] -2025/03/03 09:34:52 INFO DevServer ready -{"level":"info","msg":"Started Worker[Namespace default TaskQueue startTest WorkerID 94877@Rosss-MacBook-Pro.local@]","time":"2025-03-03T09:34:52-05:00"} -{"level":"warning","msg":"Failed to poll for task.[Namespace default TaskQueue startTest WorkerID 94877@Rosss-MacBook-Pro.local@ WorkerType ActivityWorker Error grpc: the client connection is closing]","time":"2025-03-03T09:34:52-05:00"} -{"level":"warning","msg":"Failed to poll for task.[Namespace default TaskQueue startTest WorkerID 94877@Rosss-MacBook-Pro.local@ WorkerType WorkflowWorker Error grpc: the client connection is closing]","time":"2025-03-03T09:34:52-05:00"} -CLI 1.2.0 (Server 1.26.2, UI 2.34.0) - -Server: localhost:57916 -Metrics: http://localhost:57919/metrics -Stopping server... -time=2025-03-03T09:34:52.626 level=ERROR msg="service failures" operation=PollActivityTaskQueue wf-namespace=default grpc_code=Unavailable error="Frontend is not healthy yet" -time=2025-03-03T09:34:52.626 level=WARN msg="Failed to poll for task." service=worker Namespace=default TaskQueue=temporal-sys-per-ns-tq WorkerID=temporal-system@Rosss-MacBook-Pro.local@default WorkerType=ActivityWorker Error="Frontend is not healthy yet" -time=2025-03-03T09:34:52.627 level=WARN msg="Failed to poll for task." service=worker Namespace=default TaskQueue=temporal-sys-per-ns-tq WorkerID=temporal-system@Rosss-MacBook-Pro.local@default WorkerType=WorkflowWorker Error="last connection error: connection error: desc = \"transport: Error while dialing: dial tcp 127.0.0.1:57916: connect: connection refused\"" -time=2025-03-03T09:34:52.627 level=WARN msg="Failed to poll for task." service=worker Namespace=default TaskQueue=temporal-sys-per-ns-tq WorkerID=temporal-system@Rosss-MacBook-Pro.local@default WorkerType=ActivityWorker Error="last connection error: connection error: desc = \"transport: Error while dialing: dial tcp 127.0.0.1:57916: connect: connection refused\"" -time=2025-03-03T09:34:53.627 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-tq-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:57923 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:34:53.627 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-history-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:57923 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:34:53.627 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-tq-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:57923 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:34:53.627 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-processor-parent-close-policy WorkerID=temporal-system@127.0.0.1:57923 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:34:53.627 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-history-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:57923 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:34:53.627 level=WARN msg="Failed to poll for task." service=worker Namespace=default TaskQueue=temporal-sys-per-ns-tq WorkerID=temporal-system@Rosss-MacBook-Pro.local@default WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:34:53.627 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-processor-parent-close-policy WorkerID=temporal-system@127.0.0.1:57923 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" ---- PASS: TestStart (1.35s) -=== RUN TestSubmit -2025/03/03 09:34:53 INFO Starting DevServer ExePath /var/folders/50/3__098sx6p15jz_0m0yp3m_r0000gn/T/temporal-cli-go-sdk-1.31.0 Args [server start-dev --ip 127.0.0.1 --port 57945 --namespace default --dynamic-config-value frontend.enableServerVersionCheck=false --headless] -2025/03/03 09:34:53 INFO DevServer ready -{"level":"info","msg":"Started Worker[Namespace default TaskQueue unitTestModel WorkerID 94877@Rosss-MacBook-Pro.local@]","time":"2025-03-03T09:34:53-05:00"} -{"level":"debug","msg":"ExecuteActivity[Namespace default TaskQueue unitTestModel WorkerID 94877@Rosss-MacBook-Pro.local@ WorkflowType runner WorkflowID unitTestModel-1741012493 RunID 23895d7c-8070-4378-b7c7-c011457bb675 Attempt 1 ActivityID 5 ActivityType unitTestActivity]","time":"2025-03-03T09:34:53-05:00"} -{"level":"info","msg":"Stopped Worker[Namespace default TaskQueue unitTestModel WorkerID 94877@Rosss-MacBook-Pro.local@]","time":"2025-03-03T09:34:53-05:00"} -CLI 1.2.0 (Server 1.26.2, UI 2.34.0) - -Server: localhost:57945 -Metrics: http://localhost:57947/metrics -Stopping server... -time=2025-03-03T09:34:53.848 level=ERROR msg="service failures" operation=DescribeNamespace wf-namespace=default grpc_code=Unavailable error="Frontend is not healthy yet" -time=2025-03-03T09:34:53.848 level=ERROR msg="service failures" operation=PollWorkflowTaskQueue wf-namespace=default grpc_code=Unavailable error="Frontend is not healthy yet" -time=2025-03-03T09:34:53.849 level=WARN msg="Failed to poll for task." service=worker Namespace=default TaskQueue=temporal-sys-per-ns-tq WorkerID=temporal-system@Rosss-MacBook-Pro.local@default WorkerType=WorkflowWorker Error="Frontend is not healthy yet" -time=2025-03-03T09:34:53.849 level=WARN msg="Failed to poll for task." service=worker Namespace=default TaskQueue=temporal-sys-per-ns-tq WorkerID=temporal-system@Rosss-MacBook-Pro.local@default WorkerType=WorkflowWorker Error="last connection error: connection error: desc = \"transport: Error while dialing: dial tcp 127.0.0.1:57945: connect: connection refused\"" -time=2025-03-03T09:34:54.850 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-tq-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:57951 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:34:54.850 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-tq-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:57951 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:34:54.850 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-history-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:57951 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:34:54.850 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-processor-parent-close-policy WorkerID=temporal-system@127.0.0.1:57951 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:34:54.851 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-history-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:57951 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:34:54.851 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-processor-parent-close-policy WorkerID=temporal-system@127.0.0.1:57951 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" ---- PASS: TestSubmit (1.23s) -=== RUN TestSubmit_NoModel ---- PASS: TestSubmit_NoModel (0.00s) -=== RUN TestClose -2025/03/03 09:34:54 INFO Starting DevServer ExePath /var/folders/50/3__098sx6p15jz_0m0yp3m_r0000gn/T/temporal-cli-go-sdk-1.31.0 Args [server start-dev --ip 127.0.0.1 --port 57974 --namespace default --dynamic-config-value frontend.enableServerVersionCheck=false --headless] -2025/03/03 09:34:54 INFO DevServer ready -CLI 1.2.0 (Server 1.26.2, UI 2.34.0) - -Server: localhost:57974 -Metrics: http://localhost:57976/metrics -Stopping server... -time=2025-03-03T09:34:55.098 level=ERROR msg="service failures" operation=PollActivityTaskQueue wf-namespace=default grpc_code=Unavailable error="Frontend is not healthy yet" -time=2025-03-03T09:34:55.099 level=ERROR msg="service failures" operation=PollWorkflowTaskQueue wf-namespace=default grpc_code=Unavailable error="Frontend is not healthy yet" -time=2025-03-03T09:34:55.099 level=WARN msg="Failed to poll for task." service=worker Namespace=default TaskQueue=temporal-sys-per-ns-tq WorkerID=temporal-system@Rosss-MacBook-Pro.local@default WorkerType=WorkflowWorker Error="Frontend is not healthy yet" -time=2025-03-03T09:34:55.099 level=WARN msg="Failed to poll for task." service=worker Namespace=default TaskQueue=temporal-sys-per-ns-tq WorkerID=temporal-system@Rosss-MacBook-Pro.local@default WorkerType=ActivityWorker Error="Frontend is not healthy yet" -time=2025-03-03T09:34:55.099 level=WARN msg="Failed to poll for task." service=worker Namespace=default TaskQueue=temporal-sys-per-ns-tq WorkerID=temporal-system@Rosss-MacBook-Pro.local@default WorkerType=ActivityWorker Error="last connection error: connection error: desc = \"transport: Error while dialing: dial tcp 127.0.0.1:57974: connect: connection refused\"" -time=2025-03-03T09:34:55.280 level=WARN msg="Failed to poll for task." service=worker Namespace=default TaskQueue=temporal-sys-per-ns-tq WorkerID=temporal-system@Rosss-MacBook-Pro.local@default WorkerType=WorkflowWorker Error="last connection error: connection error: desc = \"transport: Error while dialing: dial tcp 127.0.0.1:57974: connect: connection refused\"" -time=2025-03-03T09:34:56.102 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-tq-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:57980 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:34:56.102 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-history-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:57980 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:34:56.102 level=WARN msg="Failed to poll for task." service=worker Namespace=default TaskQueue=temporal-sys-per-ns-tq WorkerID=temporal-system@Rosss-MacBook-Pro.local@default WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:34:56.102 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-processor-parent-close-policy WorkerID=temporal-system@127.0.0.1:57980 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:34:56.102 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-history-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:57980 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:34:56.102 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-processor-parent-close-policy WorkerID=temporal-system@127.0.0.1:57980 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:34:56.102 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-tq-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:57980 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" ---- PASS: TestClose (1.25s) -=== RUN TestSchedule -2025/03/03 09:34:56 INFO Starting DevServer ExePath /var/folders/50/3__098sx6p15jz_0m0yp3m_r0000gn/T/temporal-cli-go-sdk-1.31.0 Args [server start-dev --ip 127.0.0.1 --port 58001 --namespace default --dynamic-config-value frontend.enableServerVersionCheck=false --headless] -2025/03/03 09:34:56 INFO DevServer ready -CLI 1.2.0 (Server 1.26.2, UI 2.34.0) - -Server: localhost:58001 -Metrics: http://localhost:58003/metrics -Stopping server... -time=2025-03-03T09:34:56.347 level=ERROR msg="service failures" operation=PollActivityTaskQueue wf-namespace=default grpc_code=Unavailable error="Frontend is not healthy yet" -time=2025-03-03T09:34:56.347 level=ERROR msg="service failures" operation=PollWorkflowTaskQueue wf-namespace=default grpc_code=Unavailable error="Frontend is not healthy yet" -time=2025-03-03T09:34:56.348 level=WARN msg="Failed to poll for task." service=worker Namespace=default TaskQueue=temporal-sys-per-ns-tq WorkerID=temporal-system@Rosss-MacBook-Pro.local@default WorkerType=WorkflowWorker Error="Frontend is not healthy yet" -time=2025-03-03T09:34:56.348 level=WARN msg="Failed to poll for task." service=worker Namespace=default TaskQueue=temporal-sys-per-ns-tq WorkerID=temporal-system@Rosss-MacBook-Pro.local@default WorkerType=ActivityWorker Error="Frontend is not healthy yet" -time=2025-03-03T09:34:56.348 level=WARN msg="Failed to poll for task." service=worker Namespace=default TaskQueue=temporal-sys-per-ns-tq WorkerID=temporal-system@Rosss-MacBook-Pro.local@default WorkerType=ActivityWorker Error="last connection error: connection error: desc = \"transport: Error while dialing: dial tcp 127.0.0.1:58001: connect: connection refused\"" -time=2025-03-03T09:34:56.549 level=WARN msg="Failed to poll for task." service=worker Namespace=default TaskQueue=temporal-sys-per-ns-tq WorkerID=temporal-system@Rosss-MacBook-Pro.local@default WorkerType=WorkflowWorker Error="last connection error: connection error: desc = \"transport: Error while dialing: dial tcp 127.0.0.1:58001: connect: connection refused\"" -time=2025-03-03T09:34:57.349 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-tq-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58007 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:34:57.349 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-tq-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58007 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:34:57.349 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-history-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58007 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:34:57.350 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-history-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58007 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:34:57.350 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-processor-parent-close-policy WorkerID=temporal-system@127.0.0.1:58007 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:34:57.350 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-processor-parent-close-policy WorkerID=temporal-system@127.0.0.1:58007 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:34:57.351 level=WARN msg="Failed to poll for task." service=worker Namespace=default TaskQueue=temporal-sys-per-ns-tq WorkerID=temporal-system@Rosss-MacBook-Pro.local@default WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" ---- PASS: TestSchedule (1.25s) -=== RUN TestScheduledConfigs -2025/03/03 09:34:57 INFO Starting DevServer ExePath /var/folders/50/3__098sx6p15jz_0m0yp3m_r0000gn/T/temporal-cli-go-sdk-1.31.0 Args [server start-dev --ip 127.0.0.1 --port 58027 --namespace default --dynamic-config-value frontend.enableServerVersionCheck=false --headless] -2025/03/03 09:34:57 INFO DevServer ready -CLI 1.2.0 (Server 1.26.2, UI 2.34.0) - -Server: localhost:58027 -Metrics: http://localhost:58030/metrics -Stopping server... -time=2025-03-03T09:34:57.598 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-dlq-activity-tq WorkerID=temporal-system@Rosss-MacBook-Pro.local WorkerType=ActivityWorker Error="worker stopping" -time=2025-03-03T09:34:57.599 level=ERROR msg="service failures" operation=PollActivityTaskQueue wf-namespace=default grpc_code=Unavailable error="Frontend is not healthy yet" -time=2025-03-03T09:34:57.599 level=ERROR msg="service failures" operation=PollWorkflowTaskQueue wf-namespace=default grpc_code=Unavailable error="Frontend is not healthy yet" -time=2025-03-03T09:34:57.600 level=WARN msg="Failed to poll for task." service=worker Namespace=default TaskQueue=temporal-sys-per-ns-tq WorkerID=temporal-system@Rosss-MacBook-Pro.local@default WorkerType=WorkflowWorker Error="Frontend is not healthy yet" -time=2025-03-03T09:34:57.600 level=WARN msg="Failed to poll for task." service=worker Namespace=default TaskQueue=temporal-sys-per-ns-tq WorkerID=temporal-system@Rosss-MacBook-Pro.local@default WorkerType=ActivityWorker Error="Frontend is not healthy yet" -time=2025-03-03T09:34:57.600 level=WARN msg="Failed to poll for task." service=worker Namespace=default TaskQueue=temporal-sys-per-ns-tq WorkerID=temporal-system@Rosss-MacBook-Pro.local@default WorkerType=ActivityWorker Error="last connection error: connection error: desc = \"transport: Error while dialing: dial tcp 127.0.0.1:58027: connect: connection refused\"" -time=2025-03-03T09:34:57.785 level=WARN msg="Failed to poll for task." service=worker Namespace=default TaskQueue=temporal-sys-per-ns-tq WorkerID=temporal-system@Rosss-MacBook-Pro.local@default WorkerType=WorkflowWorker Error="last connection error: connection error: desc = \"transport: Error while dialing: dial tcp 127.0.0.1:58027: connect: connection refused\"" -time=2025-03-03T09:34:58.607 level=WARN msg="Failed to poll for task." service=worker Namespace=default TaskQueue=temporal-sys-per-ns-tq WorkerID=temporal-system@Rosss-MacBook-Pro.local@default WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:34:58.607 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-tq-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58034 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:34:58.607 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-processor-parent-close-policy WorkerID=temporal-system@127.0.0.1:58034 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:34:58.607 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-history-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58034 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:34:58.608 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-tq-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58034 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:34:58.608 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-processor-parent-close-policy WorkerID=temporal-system@127.0.0.1:58034 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:34:58.608 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-history-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58034 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" ---- PASS: TestScheduledConfigs (1.26s) -=== RUN TestClient_HasModel -2025/03/03 09:34:58 INFO Starting DevServer ExePath /var/folders/50/3__098sx6p15jz_0m0yp3m_r0000gn/T/temporal-cli-go-sdk-1.31.0 Args [server start-dev --ip 127.0.0.1 --port 58057 --namespace default --dynamic-config-value frontend.enableServerVersionCheck=false --headless] -2025/03/03 09:34:58 INFO DevServer ready -CLI 1.2.0 (Server 1.26.2, UI 2.34.0) - -Server: localhost:58057 -Metrics: http://localhost:58059/metrics -Stopping server... -time=2025-03-03T09:34:59.862 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-history-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58063 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:34:59.862 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-tq-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58063 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:34:59.862 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-tq-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58063 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:34:59.863 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-processor-parent-close-policy WorkerID=temporal-system@127.0.0.1:58063 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:34:59.863 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-processor-parent-close-policy WorkerID=temporal-system@127.0.0.1:58063 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:34:59.863 level=WARN msg="Failed to poll for task." service=worker Namespace=default TaskQueue=temporal-sys-per-ns-tq WorkerID=temporal-system@Rosss-MacBook-Pro.local@default WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:34:59.864 level=WARN msg="Failed to poll for task." service=worker Namespace=default TaskQueue=temporal-sys-per-ns-tq WorkerID=temporal-system@Rosss-MacBook-Pro.local@default WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:34:59.862 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-history-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58063 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" ---- PASS: TestClient_HasModel (1.26s) -=== RUN TestConnect -2025/03/03 09:34:59 INFO Starting DevServer ExePath /var/folders/50/3__098sx6p15jz_0m0yp3m_r0000gn/T/temporal-cli-go-sdk-1.31.0 Args [server start-dev --ip 127.0.0.1 --port 58085 --namespace default --dynamic-config-value frontend.enableServerVersionCheck=false --headless] -2025/03/03 09:34:59 INFO DevServer ready -CLI 1.2.0 (Server 1.26.2, UI 2.34.0) - -Server: localhost:58085 -Metrics: http://localhost:58087/metrics -Stopping server... -time=2025-03-03T09:35:01.119 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-processor-parent-close-policy WorkerID=temporal-system@127.0.0.1:58091 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:01.121 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-tq-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58091 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:01.121 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-tq-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58091 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:01.121 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-processor-parent-close-policy WorkerID=temporal-system@127.0.0.1:58091 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:01.121 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-history-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58091 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:01.121 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-history-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58091 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" ---- PASS: TestConnect (1.25s) -=== RUN TestConnect_NoHost ---- PASS: TestConnect_NoHost (0.00s) -=== RUN TestConnect_DialError ---- PASS: TestConnect_DialError (0.06s) -=== RUN TestListen_FailedStart -2025/03/03 09:35:01 INFO Starting DevServer ExePath /var/folders/50/3__098sx6p15jz_0m0yp3m_r0000gn/T/temporal-cli-go-sdk-1.31.0 Args [server start-dev --ip 127.0.0.1 --port 58123 --namespace default --dynamic-config-value frontend.enableServerVersionCheck=false --headless] -2025/03/03 09:35:01 INFO DevServer ready -CLI 1.2.0 (Server 1.26.2, UI 2.34.0) - -Server: localhost:58123 -Metrics: http://localhost:58125/metrics -Stopping server... -time=2025-03-03T09:35:02.427 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-tq-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58129 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:02.427 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-history-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58129 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:02.431 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-history-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58129 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:02.431 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-tq-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58129 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:02.432 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-processor-parent-close-policy WorkerID=temporal-system@127.0.0.1:58129 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:02.432 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-processor-parent-close-policy WorkerID=temporal-system@127.0.0.1:58129 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" ---- PASS: TestListen_FailedStart (11.25s) -=== RUN TestSubmit_FailedMarshal ---- PASS: TestSubmit_FailedMarshal (0.00s) -=== RUN TestSubmit_FailedExecute -2025/03/03 09:35:12 INFO Starting DevServer ExePath /var/folders/50/3__098sx6p15jz_0m0yp3m_r0000gn/T/temporal-cli-go-sdk-1.31.0 Args [server start-dev --ip 127.0.0.1 --port 58186 --namespace default --dynamic-config-value frontend.enableServerVersionCheck=false --headless] -2025/03/03 09:35:12 INFO DevServer ready -CLI 1.2.0 (Server 1.26.2, UI 2.34.0) - -Server: localhost:58186 -Metrics: http://localhost:58188/metrics -Stopping server... -time=2025-03-03T09:35:12.686 level=ERROR msg="service failures" operation=PollActivityTaskQueue wf-namespace=temporal-system grpc_code=Unavailable error="Frontend is not healthy yet" -time=2025-03-03T09:35:12.686 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-per-ns-tq WorkerID=temporal-system@Rosss-MacBook-Pro.local@temporal-system WorkerType=WorkflowWorker Error="last connection error: connection error: desc = \"transport: Error while dialing: dial tcp 127.0.0.1:58186: connect: connection refused\"" -time=2025-03-03T09:35:12.686 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-per-ns-tq WorkerID=temporal-system@Rosss-MacBook-Pro.local@temporal-system WorkerType=ActivityWorker Error="Frontend is not healthy yet" -time=2025-03-03T09:35:12.687 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-per-ns-tq WorkerID=temporal-system@Rosss-MacBook-Pro.local@temporal-system WorkerType=ActivityWorker Error="last connection error: connection error: desc = \"transport: Error while dialing: dial tcp 127.0.0.1:58186: connect: connection refused\"" -time=2025-03-03T09:35:13.688 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-tq-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58192 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:13.689 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-tq-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58192 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:13.689 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-processor-parent-close-policy WorkerID=temporal-system@127.0.0.1:58192 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:13.689 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-history-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58192 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:13.690 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-processor-parent-close-policy WorkerID=temporal-system@127.0.0.1:58192 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:13.690 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-history-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58192 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:13.690 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-per-ns-tq WorkerID=temporal-system@Rosss-MacBook-Pro.local@temporal-system WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" ---- PASS: TestSubmit_FailedExecute (11.26s) -=== RUN TestSubmit_WorkflowFailure -2025/03/03 09:35:23 INFO Starting DevServer ExePath /var/folders/50/3__098sx6p15jz_0m0yp3m_r0000gn/T/temporal-cli-go-sdk-1.31.0 Args [server start-dev --ip 127.0.0.1 --port 58236 --namespace default --dynamic-config-value frontend.enableServerVersionCheck=false --headless] -2025/03/03 09:35:23 INFO DevServer ready -{"level":"info","msg":"Started Worker[Namespace default TaskQueue 72ea94ac-de05-4595-8e20-78497f06e2ac WorkerID 94877@Rosss-MacBook-Pro.local@]","time":"2025-03-03T09:35:23-05:00"} -{"level":"warning","msg":"Failed to poll for task.[Namespace default TaskQueue 72ea94ac-de05-4595-8e20-78497f06e2ac WorkerID 94877@Rosss-MacBook-Pro.local@ WorkerType WorkflowWorker Error worker stopping]","time":"2025-03-03T09:35:23-05:00"} -{"level":"info","msg":"Stopped Worker[Namespace default TaskQueue 72ea94ac-de05-4595-8e20-78497f06e2ac WorkerID 94877@Rosss-MacBook-Pro.local@]","time":"2025-03-03T09:35:23-05:00"} -CLI 1.2.0 (Server 1.26.2, UI 2.34.0) - -Server: localhost:58236 -Metrics: http://localhost:58238/metrics -Stopping server... -time=2025-03-03T09:35:23.936 level=ERROR msg="service failures" operation=PollActivityTaskQueue wf-namespace=temporal-system grpc_code=Unavailable error="Frontend is not healthy yet" -time=2025-03-03T09:35:24.937 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-tq-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58242 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:24.938 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-history-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58242 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:24.938 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-history-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58242 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:24.938 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-processor-parent-close-policy WorkerID=temporal-system@127.0.0.1:58242 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:24.938 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-processor-parent-close-policy WorkerID=temporal-system@127.0.0.1:58242 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:24.938 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-tq-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58242 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" ---- PASS: TestSubmit_WorkflowFailure (1.25s) -=== RUN TestSubmit_ActivityFailure -2025/03/03 09:35:24 INFO Starting DevServer ExePath /var/folders/50/3__098sx6p15jz_0m0yp3m_r0000gn/T/temporal-cli-go-sdk-1.31.0 Args [server start-dev --ip 127.0.0.1 --port 58262 --namespace default --dynamic-config-value frontend.enableServerVersionCheck=false --headless] -2025/03/03 09:35:25 INFO DevServer ready -{"level":"info","msg":"Started Worker[Namespace default TaskQueue 3cb6b718-9f13-4143-8008-29dc4806efd5 WorkerID 94877@Rosss-MacBook-Pro.local@]","time":"2025-03-03T09:35:25-05:00"} -{"level":"debug","msg":"ExecuteActivity[Namespace default TaskQueue 3cb6b718-9f13-4143-8008-29dc4806efd5 WorkerID 94877@Rosss-MacBook-Pro.local@ WorkflowType runner WorkflowID 3cb6b718-9f13-4143-8008-29dc4806efd5-1741012525 RunID b477963d-e1bb-4f3e-a8f8-6036caaad39d Attempt 1 ActivityID 5 ActivityType activity]","time":"2025-03-03T09:35:25-05:00"} -{"level":"error","msg":"Activity error.[Namespace default TaskQueue 3cb6b718-9f13-4143-8008-29dc4806efd5 WorkerID 94877@Rosss-MacBook-Pro.local@ WorkflowID 3cb6b718-9f13-4143-8008-29dc4806efd5-1741012525 RunID b477963d-e1bb-4f3e-a8f8-6036caaad39d ActivityType activity Attempt 1 Error activity failure]","time":"2025-03-03T09:35:25-05:00"} -{"level":"warning","msg":"Failed to poll for task.[Namespace default TaskQueue 3cb6b718-9f13-4143-8008-29dc4806efd5 WorkerID 94877@Rosss-MacBook-Pro.local@ WorkerType WorkflowWorker Error worker stopping]","time":"2025-03-03T09:35:25-05:00"} -{"level":"info","msg":"Stopped Worker[Namespace default TaskQueue 3cb6b718-9f13-4143-8008-29dc4806efd5 WorkerID 94877@Rosss-MacBook-Pro.local@]","time":"2025-03-03T09:35:25-05:00"} -CLI 1.2.0 (Server 1.26.2, UI 2.34.0) - -Server: localhost:58262 -Metrics: http://localhost:58265/metrics -Stopping server... -time=2025-03-03T09:35:26.189 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-tq-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58269 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:26.189 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-history-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58269 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:26.189 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-history-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58269 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:26.190 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-tq-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58269 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:26.190 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-processor-parent-close-policy WorkerID=temporal-system@127.0.0.1:58269 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:26.190 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-processor-parent-close-policy WorkerID=temporal-system@127.0.0.1:58269 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" ---- PASS: TestSubmit_ActivityFailure (1.25s) -=== RUN TestSubmit_CustomWorkflow -2025/03/03 09:35:26 INFO Starting DevServer ExePath /var/folders/50/3__098sx6p15jz_0m0yp3m_r0000gn/T/temporal-cli-go-sdk-1.31.0 Args [server start-dev --ip 127.0.0.1 --port 58291 --namespace default --dynamic-config-value frontend.enableServerVersionCheck=false --headless] -2025/03/03 09:35:26 INFO DevServer ready -{"level":"info","msg":"Started Worker[Namespace default TaskQueue 3c2f4af1-54ed-4a63-b1e6-882323be994b WorkerID 94877@Rosss-MacBook-Pro.local@]","time":"2025-03-03T09:35:26-05:00"} -{"level":"debug","msg":"ExecuteActivity[Namespace default TaskQueue 3c2f4af1-54ed-4a63-b1e6-882323be994b WorkerID 94877@Rosss-MacBook-Pro.local@ WorkflowType runner WorkflowID 3c2f4af1-54ed-4a63-b1e6-882323be994b-1741012526 RunID f88f6297-f7ce-4f7d-8ed3-3244f74e4ada Attempt 1 ActivityID 5 ActivityType activity]","time":"2025-03-03T09:35:26-05:00"} -{"level":"warning","msg":"Failed to poll for task.[Namespace default TaskQueue 3c2f4af1-54ed-4a63-b1e6-882323be994b WorkerID 94877@Rosss-MacBook-Pro.local@ WorkerType WorkflowWorker Error worker stopping]","time":"2025-03-03T09:35:26-05:00"} -{"level":"info","msg":"Stopped Worker[Namespace default TaskQueue 3c2f4af1-54ed-4a63-b1e6-882323be994b WorkerID 94877@Rosss-MacBook-Pro.local@]","time":"2025-03-03T09:35:26-05:00"} -CLI 1.2.0 (Server 1.26.2, UI 2.34.0) - -Server: localhost:58291 -Metrics: http://localhost:58294/metrics -Stopping server... -time=2025-03-03T09:35:26.431 level=ERROR msg="service failures" operation=PollActivityTaskQueue wf-namespace=temporal-system grpc_code=Unavailable error="Frontend is not healthy yet" -time=2025-03-03T09:35:27.433 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-history-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58298 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:27.436 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-history-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58298 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:27.436 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-processor-parent-close-policy WorkerID=temporal-system@127.0.0.1:58298 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:27.437 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-tq-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58298 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:27.437 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-tq-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58298 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:27.437 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-processor-parent-close-policy WorkerID=temporal-system@127.0.0.1:58298 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" ---- PASS: TestSubmit_CustomWorkflow (1.25s) -=== RUN TestSubmit_CustomWorkflowActivityFailure -2025/03/03 09:35:27 INFO Starting DevServer ExePath /var/folders/50/3__098sx6p15jz_0m0yp3m_r0000gn/T/temporal-cli-go-sdk-1.31.0 Args [server start-dev --ip 127.0.0.1 --port 58323 --namespace default --dynamic-config-value frontend.enableServerVersionCheck=false --headless] -2025/03/03 09:35:27 INFO DevServer ready -{"level":"info","msg":"Started Worker[Namespace default TaskQueue 440de023-1671-4091-805f-587846575319 WorkerID 94877@Rosss-MacBook-Pro.local@]","time":"2025-03-03T09:35:27-05:00"} -{"level":"debug","msg":"ExecuteActivity[Namespace default TaskQueue 440de023-1671-4091-805f-587846575319 WorkerID 94877@Rosss-MacBook-Pro.local@ WorkflowType runner WorkflowID 440de023-1671-4091-805f-587846575319-1741012527 RunID 4664f954-de4d-48db-aa3e-a99b9ff499f1 Attempt 1 ActivityID 5 ActivityType activity]","time":"2025-03-03T09:35:27-05:00"} -{"level":"error","msg":"Activity error.[Namespace default TaskQueue 440de023-1671-4091-805f-587846575319 WorkerID 94877@Rosss-MacBook-Pro.local@ WorkflowID 440de023-1671-4091-805f-587846575319-1741012527 RunID 4664f954-de4d-48db-aa3e-a99b9ff499f1 ActivityType activity Attempt 1 Error activity failure]","time":"2025-03-03T09:35:27-05:00"} -{"level":"warning","msg":"Failed to poll for task.[Namespace default TaskQueue 440de023-1671-4091-805f-587846575319 WorkerID 94877@Rosss-MacBook-Pro.local@ WorkerType WorkflowWorker Error worker stopping]","time":"2025-03-03T09:35:27-05:00"} -{"level":"info","msg":"Stopped Worker[Namespace default TaskQueue 440de023-1671-4091-805f-587846575319 WorkerID 94877@Rosss-MacBook-Pro.local@]","time":"2025-03-03T09:35:27-05:00"} -CLI 1.2.0 (Server 1.26.2, UI 2.34.0) - -Server: localhost:58323 -Metrics: http://localhost:58326/metrics -Stopping server... -time=2025-03-03T09:35:28.686 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-history-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58330 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:28.686 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-tq-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58330 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:28.686 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-tq-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58330 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:28.686 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-processor-parent-close-policy WorkerID=temporal-system@127.0.0.1:58330 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:28.686 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-history-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58330 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:28.687 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-processor-parent-close-policy WorkerID=temporal-system@127.0.0.1:58330 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" ---- PASS: TestSubmit_CustomWorkflowActivityFailure (1.25s) -=== RUN TestRegister ---- PASS: TestRegister (0.00s) -=== RUN TestRegister_ErrorHandling ---- PASS: TestRegister_ErrorHandling (0.00s) -=== RUN TestScheduleConfig_Event ---- PASS: TestScheduleConfig_Event (0.00s) -=== RUN TestScheduleConfig_Name ---- PASS: TestScheduleConfig_Name (0.00s) -=== RUN TestScheduleConfigs_Add ---- PASS: TestScheduleConfigs_Add (0.00s) -=== RUN TestScheduleConfigs_Diff ---- PASS: TestScheduleConfigs_Diff (0.00s) -=== RUN TestScheduleConfigs_Contains ---- PASS: TestScheduleConfigs_Contains (0.00s) -=== RUN TestScheduleConfig_ParseMemo ---- PASS: TestScheduleConfig_ParseMemo (0.00s) -=== RUN TestScheduleConfig_ParseMemo_Error ---- PASS: TestScheduleConfig_ParseMemo_Error (0.00s) -=== RUN TestScheduleMigrate -2025/03/03 09:35:28 INFO Starting DevServer ExePath /var/folders/50/3__098sx6p15jz_0m0yp3m_r0000gn/T/temporal-cli-go-sdk-1.31.0 Args [server start-dev --ip 127.0.0.1 --port 58355 --namespace default --dynamic-config-value frontend.enableServerVersionCheck=false --headless] -2025/03/03 09:35:28 INFO DevServer ready -CLI 1.2.0 (Server 1.26.2, UI 2.34.0) - -Server: localhost:58355 -Metrics: http://localhost:58357/metrics -Stopping server... -time=2025-03-03T09:35:29.938 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-history-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58361 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:29.938 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-tq-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58361 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:29.938 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-processor-parent-close-policy WorkerID=temporal-system@127.0.0.1:58361 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:29.938 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-history-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58361 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:29.938 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-processor-parent-close-policy WorkerID=temporal-system@127.0.0.1:58361 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:29.938 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-tq-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58361 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" ---- PASS: TestScheduleMigrate (1.25s) -=== RUN TestWorker -2025/03/03 09:35:29 INFO Starting DevServer ExePath /var/folders/50/3__098sx6p15jz_0m0yp3m_r0000gn/T/temporal-cli-go-sdk-1.31.0 Args [server start-dev --ip 127.0.0.1 --port 58391 --namespace default --dynamic-config-value frontend.enableServerVersionCheck=false --headless] -2025/03/03 09:35:30 INFO DevServer ready -=== RUN TestWorker/valid_process -{"level":"info","msg":"Started Worker[Namespace default TaskQueue 1d00b3cb-ad66-4645-b78a-7a724e76f673 WorkerID 94877@Rosss-MacBook-Pro.local@]","time":"2025-03-03T09:35:30-05:00"} -CLI 1.2.0 (Server 1.26.2, UI 2.34.0) - -Server: localhost:58391 -Metrics: http://localhost:58395/metrics -{"level":"warning","msg":"Failed to poll for task.[Namespace default TaskQueue 1d00b3cb-ad66-4645-b78a-7a724e76f673 WorkerID 94877@Rosss-MacBook-Pro.local@ WorkerType WorkflowWorker Error worker stopping]","time":"2025-03-03T09:35:31-05:00"} -{"level":"info","msg":"Stopped Worker[Namespace default TaskQueue 1d00b3cb-ad66-4645-b78a-7a724e76f673 WorkerID 94877@Rosss-MacBook-Pro.local@]","time":"2025-03-03T09:35:31-05:00"} -=== RUN TestWorker/invalid_workflow -=== RUN TestWorker/invalid_stream -Stopping server... -time=2025-03-03T09:35:32.085 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-tq-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58399 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:32.085 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-history-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58399 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:32.085 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-processor-parent-close-policy WorkerID=temporal-system@127.0.0.1:58399 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:32.085 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-tq-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58399 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:32.085 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-processor-parent-close-policy WorkerID=temporal-system@127.0.0.1:58399 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:32.085 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-history-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58399 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" ---- PASS: TestWorker (2.15s) - --- PASS: TestWorker/valid_process (1.01s) - --- PASS: TestWorker/invalid_workflow (0.00s) - --- PASS: TestWorker/invalid_stream (0.00s) -=== RUN TestSchedules -2025/03/03 09:35:32 INFO Starting DevServer ExePath /var/folders/50/3__098sx6p15jz_0m0yp3m_r0000gn/T/temporal-cli-go-sdk-1.31.0 Args [server start-dev --ip 127.0.0.1 --port 58442 --namespace default --dynamic-config-value frontend.enableServerVersionCheck=false --headless] -2025/03/03 09:35:32 INFO DevServer ready -=== RUN TestSchedules/TestSchedule_ID -=== RUN TestSchedules/TestSchedule_Validate -=== RUN TestSchedules/TestSchedule_Remove -=== RUN TestSchedules/TestSchedule_Upsert -CLI 1.2.0 (Server 1.26.2, UI 2.34.0) - -Server: localhost:58442 -Metrics: http://localhost:58445/metrics -Stopping server... -time=2025-03-03T09:35:33.352 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-tq-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58449 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:33.353 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-history-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58449 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:33.353 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-processor-parent-close-policy WorkerID=temporal-system@127.0.0.1:58449 WorkerType=ActivityWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:33.353 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-history-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58449 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:33.353 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-tq-scanner-taskqueue-0 WorkerID=temporal-system@127.0.0.1:58449 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" -time=2025-03-03T09:35:33.354 level=WARN msg="Failed to poll for task." service=worker Namespace=temporal-system TaskQueue=temporal-sys-processor-parent-close-policy WorkerID=temporal-system@127.0.0.1:58449 WorkerType=WorkflowWorker Error="closing transport due to: connection error: desc = \"error reading from server: EOF\", received prior goaway: code: NO_ERROR, debug data: \"graceful_stop\"" ---- PASS: TestSchedules (1.27s) - --- PASS: TestSchedules/TestSchedule_ID (0.00s) - --- PASS: TestSchedules/TestSchedule_Validate (0.00s) - --- PASS: TestSchedules/TestSchedule_Remove (0.01s) - --- PASS: TestSchedules/TestSchedule_Upsert (0.13s) -=== RUN TestRegisterActionsAsWorkfows ---- PASS: TestRegisterActionsAsWorkfows (0.00s) -=== RUN TestRegisterWorkflowAsWorkflow ---- PASS: TestRegisterWorkflowAsWorkflow (0.00s) -PASS -coverage: 14.8% of statements in ./... -ok github.com/simiancreative/simiango/temporal 44.965s coverage: 14.8% of statements in ./... -=== RUN TestTokenGenAndTest ---- PASS: TestTokenGenAndTest (0.00s) -=== RUN TestTokenDecode ---- PASS: TestTokenDecode (0.00s) -=== RUN TestTokenParse ---- PASS: TestTokenParse (0.00s) -=== RUN TestTokenTest ---- PASS: TestTokenTest (0.00s) -=== RUN TestExpiredToken ---- PASS: TestExpiredToken (0.00s) -PASS -coverage: 3.5% of statements in ./... -ok github.com/simiancreative/simiango/token 4.053s coverage: 3.5% of statements in ./... -=== RUN TestValidateSuccess ---- PASS: TestValidateSuccess (0.00s) -=== RUN TestValidateFailed ---- PASS: TestValidateFailed (0.00s) -=== RUN TestValidateResultError ---- PASS: TestValidateResultError (0.00s) -=== RUN TestValidateError ---- PASS: TestValidateError (0.00s) -=== RUN TestValid ---- PASS: TestValid (0.00s) -=== RUN TestAddValidation ---- PASS: TestAddValidation (0.00s) -PASS -coverage: 2.5% of statements in ./... -ok github.com/simiancreative/simiango/validate 4.020s coverage: 2.5% of statements in ./... -=== RUN TestExec ---- PASS: TestExec (0.00s) -=== RUN TestValidFlags ---- PASS: TestValidFlags (0.00s) -=== RUN TestFailedArgs -Error: failed to check args: Args/Flags not found for (invalid-args-tester:invalid-args) required args are: - -❌ test : test Description - -Usage: - workflows invalid-args-tester invalid-args [flags] - -Flags: - -h, --help help for invalid-args - --test string test Description - ---- PASS: TestFailedArgs (0.00s) -=== RUN TestSomeValidArgs -Error: failed to check args: Args/Flags not found for (some-valid-args:runner) required args are: - -✅ test : test Description -❌ test-two : test Description - -Usage: - workflows some-valid-args runner [flags] - -Flags: - -h, --help help for runner - --test string test Description - --test-two string test Description - ---- PASS: TestSomeValidArgs (0.00s) -=== RUN TestHandleError -Error: failed to run action: test error ---- PASS: TestHandleError (0.00s) -=== RUN TestMixOfFlagsAndPositional ---- PASS: TestMixOfFlagsAndPositional (0.00s) -=== RUN TestItemFromJSON ---- PASS: TestItemFromJSON (0.00s) -=== RUN TestItemFromJSONWithInvalidKey ---- PASS: TestItemFromJSONWithInvalidKey (0.00s) -=== RUN TestUnmarshalKey ---- PASS: TestUnmarshalKey (0.00s) -=== RUN TestUnmarshalKeyWithInvalidKey ---- PASS: TestUnmarshalKeyWithInvalidKey (0.00s) -PASS -coverage: 4.2% of statements in ./... -ok github.com/simiancreative/simiango/workflow 4.319s coverage: 4.2% of statements in ./...