MCPcopy
hub / github.com/uber/aresdb / TestEnumMutator

Function TestEnumMutator

controller/mutators/etcd/enum_mutator_test.go:28–95  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

26)
27
28func TestEnumMutator(t *testing.T) {
29 testTable := metaCom.Table{
30 Name: "test",
31 Columns: []metaCom.Column{
32 {
33 Name: "c1",
34 Type: metaCom.BigEnum,
35 Deleted: false,
36 },
37 },
38 }
39
40 t.Run("Extend and get enum cases", func(t *testing.T) {
41 // test setup
42 txnStore := mem.NewStore()
43
44 _, err := txnStore.Set(utils.EnumNodeListKey("ns1", "test", 0, 0), &pb.EnumNodeList{
45 NumEnumNodes: 1,
46 })
47 assert.NoError(t, err)
48 _, err = txnStore.Set(utils.EnumNodeKey("ns1", "test", 0, 0, 0), &pb.EnumCases{
49 Cases: []string{},
50 })
51 assert.NoError(t, err)
52
53 schemaMutator := &mocks.TableSchemaMutator{}
54 // test
55 enumMutator := NewEnumMutator(txnStore, schemaMutator)
56 schemaMutator.On("GetTable", "ns1", "test").Return(&testTable, nil)
57 enumCases, err := enumMutator.GetEnumCases("ns1", "test", "c1")
58 assert.NoError(t, err)
59 assert.Empty(t, enumCases)
60
61 enumIDs, err := enumMutator.ExtendEnumCases("ns1", "test", "c1", []string{"a", "b"})
62 assert.NoError(t, err)
63 assert.Equal(t, enumIDs, []int{0, 1})
64
65 enumIDs, err = enumMutator.ExtendEnumCases("ns1", "test", "c1", []string{"c", "b", "a"})
66 assert.NoError(t, err)
67 assert.Equal(t, enumIDs, []int{2, 1, 0})
68
69 enumCases, err = enumMutator.GetEnumCases("ns1", "test", "c1")
70 assert.NoError(t, err)
71 assert.Equal(t, enumCases, []string{"a", "b", "c"})
72
73 existingNumEnums := len(enumCases)
74
75 // test more than 1 node
76 newCases := make([]string, 0)
77 for i := 0; i < maxEnumCasePerNode; i++ {
78 newCases = append(newCases, strconv.Itoa(existingNumEnums+i))
79 }
80
81 enumIDs, err = enumMutator.ExtendEnumCases("ns1", "test", "c1", newCases)
82 if assert.NoError(t, err) {
83 for i := 0; i < maxEnumCasePerNode; i++ {
84 assert.Equal(t, enumIDs[i], existingNumEnums+i)
85 }

Callers

nothing calls this directly

Calls 8

GetEnumCasesMethod · 0.95
ExtendEnumCasesMethod · 0.95
EnumNodeListKeyFunction · 0.92
EnumNodeKeyFunction · 0.92
NewEnumMutatorFunction · 0.85
RunMethod · 0.65
SetMethod · 0.45
LenMethod · 0.45

Tested by

no test coverage detected