Skip to content

Commit

Permalink
add: improve server tests
Browse files Browse the repository at this point in the history
  • Loading branch information
coufalja committed Jan 22, 2024
1 parent dfa3654 commit a126837
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 52 deletions.
19 changes: 4 additions & 15 deletions regattaserver/regattaserver_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -97,21 +97,10 @@ func newInMemTestEngine(t *testing.T, tables ...string) *storage.Engine {
for _, tableName := range tables {
at, err := e.CreateTable(tableName)
require.NoError(t, err)
after := time.After(10 * time.Second)
outer:
for {
select {
case <-after:
t.FailNow()
return nil
default:
_, _, ok, _ := e.GetLeaderID(at.ClusterID)
if ok {
break outer
}
time.Sleep(5 * time.Millisecond)
}
}
require.Eventually(t, func() bool {
_, _, ok, _ := e.GetLeaderID(at.ClusterID)
return ok
}, 10*time.Second, 5*time.Millisecond, "table did not start in time")
}
t.Cleanup(func() {
_ = e.Close()
Expand Down
17 changes: 8 additions & 9 deletions regattaserver/replication_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import (

"github.com/jamf/regatta/regattapb"
"github.com/lni/dragonboat/v4/raftpb"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"go.uber.org/zap/zaptest"
"google.golang.org/grpc"
Expand Down Expand Up @@ -154,19 +153,19 @@ func TestSnapshotServer_Stream(t *testing.T) {
name string
fields fields
args args
wantErr assert.ErrorAssertionFunc
wantErr require.ErrorAssertionFunc
wantChunksCount int
}{
{
name: "table not exist",
args: args{req: &regattapb.SnapshotRequest{Table: table1Name}},
wantErr: assert.Error,
wantErr: require.Error,
},
{
name: "snapshot",
fields: fields{Tables: []string{string(table1Name)}},
args: args{req: &regattapb.SnapshotRequest{Table: table1Name}},
wantErr: assert.NoError,
wantErr: require.NoError,
wantChunksCount: 2,
},
}
Expand All @@ -177,7 +176,7 @@ func TestSnapshotServer_Stream(t *testing.T) {
}
capture := &captureSnapshotStream{}
tt.wantErr(t, s.Stream(tt.args.req, capture), fmt.Sprintf("Stream(%v)", tt.args.req))
assert.Equal(t, tt.wantChunksCount, len(capture.chunks))
require.Equal(t, tt.wantChunksCount, len(capture.chunks))
})
}
}
Expand Down Expand Up @@ -209,23 +208,23 @@ func TestLogServer_Replicate(t *testing.T) {
name string
fields fields
args args
wantErr assert.ErrorAssertionFunc
wantErr require.ErrorAssertionFunc
}{
{
name: "table not exist",
args: args{req: &regattapb.ReplicateRequest{Table: table1Name}},
wantErr: assert.Error,
wantErr: require.Error,
},
{
name: "zero index",
args: args{req: &regattapb.ReplicateRequest{Table: table1Name}},
wantErr: assert.Error,
wantErr: require.Error,
},
{
name: "stream",
fields: fields{Tables: []string{string(table1Name)}},
args: args{req: &regattapb.ReplicateRequest{Table: table1Name, LeaderIndex: 1}},
wantErr: assert.NoError,
wantErr: require.NoError,
},
}
for _, tt := range tests {
Expand Down
50 changes: 22 additions & 28 deletions regattaserver/tables_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (
"testing"

"github.com/jamf/regatta/regattapb"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
Expand All @@ -27,32 +27,32 @@ func TestTablesServer_Create(t *testing.T) {
fields fields
args args
want *regattapb.CreateTableResponse
wantErr assert.ErrorAssertionFunc
wantErr require.ErrorAssertionFunc
}{
{
name: "allow all - missing table name",
fields: fields{AuthFunc: allowAll},
args: args{req: &regattapb.CreateTableRequest{}},
wantErr: assert.Error,
wantErr: require.Error,
},
{
name: "allow all - not existing table",
fields: fields{AuthFunc: allowAll},
args: args{req: &regattapb.CreateTableRequest{Name: "new"}},
wantErr: assert.NoError,
wantErr: require.NoError,
want: &regattapb.CreateTableResponse{Id: "10001"},
},
{
name: "allow all - existing table",
fields: fields{AuthFunc: allowAll, Tables: []string{"exists"}},
args: args{req: &regattapb.CreateTableRequest{Name: "exists"}},
wantErr: assert.Error,
wantErr: require.Error,
},
{
name: "deny all",
fields: fields{AuthFunc: denyAll},
args: args{req: &regattapb.CreateTableRequest{}},
wantErr: assert.Error,
wantErr: require.Error,
},
}
for _, tt := range tests {
Expand All @@ -62,10 +62,8 @@ func TestTablesServer_Create(t *testing.T) {
AuthFunc: tt.fields.AuthFunc,
}
got, err := ts.Create(context.TODO(), tt.args.req)
if !tt.wantErr(t, err, fmt.Sprintf("Create(%v, %v)", context.TODO(), tt.args.req)) {
return
}
assert.Equalf(t, tt.want, got, "Create(%v, %v)", context.TODO(), tt.args.req)
tt.wantErr(t, err, fmt.Sprintf("Create(%v, %v)", context.TODO(), tt.args.req))
require.Equalf(t, tt.want, got, "Create(%v, %v)", context.TODO(), tt.args.req)
})
}
}
Expand All @@ -83,32 +81,32 @@ func TestTablesServer_Delete(t *testing.T) {
fields fields
args args
want *regattapb.DeleteTableResponse
wantErr assert.ErrorAssertionFunc
wantErr require.ErrorAssertionFunc
}{
{
name: "allow all - missing table name",
fields: fields{AuthFunc: allowAll},
args: args{req: &regattapb.DeleteTableRequest{}},
wantErr: assert.Error,
wantErr: require.Error,
},
{
name: "allow all - not existing table",
fields: fields{AuthFunc: allowAll},
args: args{req: &regattapb.DeleteTableRequest{Name: "nonexistent"}},
wantErr: assert.Error,
wantErr: require.Error,
},
{
name: "allow all - existing table",
fields: fields{AuthFunc: allowAll, Tables: []string{"exists"}},
args: args{req: &regattapb.DeleteTableRequest{Name: "exists"}},
wantErr: assert.NoError,
wantErr: require.NoError,
want: &regattapb.DeleteTableResponse{},
},
{
name: "deny all",
fields: fields{AuthFunc: denyAll},
args: args{req: &regattapb.DeleteTableRequest{}},
wantErr: assert.Error,
wantErr: require.Error,
},
}
for _, tt := range tests {
Expand All @@ -118,10 +116,8 @@ func TestTablesServer_Delete(t *testing.T) {
AuthFunc: tt.fields.AuthFunc,
}
got, err := ts.Delete(context.TODO(), tt.args.req)
if !tt.wantErr(t, err, fmt.Sprintf("Delete(%v, %v)", context.TODO(), tt.args.req)) {
return
}
assert.Equalf(t, tt.want, got, "Delete(%v, %v)", context.TODO(), tt.args.req)
tt.wantErr(t, err, fmt.Sprintf("Delete(%v, %v)", context.TODO(), tt.args.req))
require.Equalf(t, tt.want, got, "Delete(%v, %v)", context.TODO(), tt.args.req)
})
}
}
Expand All @@ -135,17 +131,17 @@ func TestTablesServer_List(t *testing.T) {
name string
fields fields
want *regattapb.ListTablesResponse
wantErr assert.ErrorAssertionFunc
wantErr require.ErrorAssertionFunc
}{
{
name: "allow all",
fields: fields{AuthFunc: allowAll},
wantErr: assert.NoError,
wantErr: require.NoError,
},
{
name: "allow all multiple tables",
fields: fields{AuthFunc: allowAll, Tables: []string{"table1", "table2"}},
wantErr: assert.NoError,
wantErr: require.NoError,
want: &regattapb.ListTablesResponse{Tables: []*regattapb.TableInfo{
{
Name: "table1",
Expand All @@ -160,7 +156,7 @@ func TestTablesServer_List(t *testing.T) {
{
name: "deny all",
fields: fields{AuthFunc: denyAll},
wantErr: assert.Error,
wantErr: require.Error,
},
}
for _, tt := range tests {
Expand All @@ -170,23 +166,21 @@ func TestTablesServer_List(t *testing.T) {
AuthFunc: tt.fields.AuthFunc,
}
_, err := ts.List(context.TODO(), &regattapb.ListTablesRequest{})
if !tt.wantErr(t, err, fmt.Sprintf("List(%v, %v)", context.TODO(), &regattapb.ListTablesRequest{})) {
return
}
tt.wantErr(t, err, fmt.Sprintf("List(%v, %v)", context.TODO(), &regattapb.ListTablesRequest{}))
})
}
}

func TestReadonlyTablesServer_Create(t *testing.T) {
ts := &ReadonlyTablesServer{}
_, err := ts.Create(context.TODO(), &regattapb.CreateTableRequest{})
assert.ErrorIs(t, err, status.Error(codes.Unimplemented, "method Create not implemented for follower"))
require.ErrorIs(t, err, status.Error(codes.Unimplemented, "method Create not implemented for follower"))
}

func TestReadonlyTablesServer_Delete(t *testing.T) {
ts := &ReadonlyTablesServer{}
_, err := ts.Delete(context.TODO(), &regattapb.DeleteTableRequest{})
assert.ErrorIs(t, err, status.Error(codes.Unimplemented, "method Delete not implemented for follower"))
require.ErrorIs(t, err, status.Error(codes.Unimplemented, "method Delete not implemented for follower"))
}

func denyAll(ctx context.Context) (context.Context, error) {
Expand Down

0 comments on commit a126837

Please sign in to comment.