Skip to content

Commit edb9dc3

Browse files
committed
Use static list of keys in model
Signed-off-by: Marek Siarkowicz <siarkowicz@google.com>
1 parent fd5f731 commit edb9dc3

12 files changed

Lines changed: 367 additions & 173 deletions

tests/robustness/model/describe.go

Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@ package model
1616

1717
import (
1818
"fmt"
19-
"maps"
20-
"slices"
2119
"sort"
2220
"strings"
2321

@@ -88,38 +86,53 @@ func describeEtcdState(state EtcdState) string {
8886

8987
descHTML = append(descHTML, fmt.Sprintf("<p style=\"margin: 0.25em 0;\">state, rev: %d, compactRev: %d</p>", state.Revision, state.CompactRevision))
9088

91-
if len(state.KeyValues) > 0 {
89+
keys := []string{}
90+
for i, v := range state.Values {
91+
if v == nil {
92+
continue
93+
}
94+
keys = append(keys, state.Keys[i])
95+
}
96+
97+
if len(keys) > 0 {
9298
descHTML = append(descHTML, "keys: <ul style=\"margin: 0.25em 0;\">")
9399

94-
keys := slices.Collect(maps.Keys(state.KeyValues))
95100
sort.Strings(keys)
96101
for _, key := range keys {
97102
descHTML = append(descHTML, fmt.Sprintf("<li style=\"margin: 0.25em 0;\"><strong>%s</strong> - ", key))
98103

99-
value := state.KeyValues[key]
104+
value, _ := state.GetValue(key)
100105
if value.Value.Value != "" {
101106
descHTML = append(descHTML, fmt.Sprintf("val: %q, ", value.Value.Value))
102107
}
103108
if value.Value.Hash != 0 {
104109
descHTML = append(descHTML, fmt.Sprintf("hash: %d, ", value.Value.Hash))
105110
}
106-
lease := state.KeyLeases[key]
107-
if lease != 0 {
108-
descHTML = append(descHTML, fmt.Sprintf("lease: %d, ", lease))
109-
}
111+
descHTML = append(descHTML, fmt.Sprintf("mod: %d, ver: %d", value.ModRevision, value.Version))
110112

111-
descHTML = append(descHTML, fmt.Sprintf("mod: %d, ver: %d</li>", value.ModRevision, value.Version))
113+
for i, k := range state.Keys {
114+
if k == key {
115+
if state.KeyLeases[i] != 0 {
116+
descHTML = append(descHTML, fmt.Sprintf(", lease: %d", state.KeyLeases[i]))
117+
}
118+
break
119+
}
120+
}
121+
descHTML = append(descHTML, "</li>")
112122
}
113123

114124
descHTML = append(descHTML, "</ul>")
115125
}
116126

117127
if len(state.Leases) > 0 {
118128
descHTML = append(descHTML, "leases: <ul style=\"margin: 0.25em 0;\">")
119-
leases := slices.Collect(maps.Keys(state.Leases))
120-
slices.Sort(leases)
121-
for _, lease := range leases {
122-
descHTML = append(descHTML, fmt.Sprintf("<li style=\"margin: 0.25em 0;\"><strong>%d</strong></li>", lease))
129+
leaseIDs := []int64{}
130+
for id := range state.Leases {
131+
leaseIDs = append(leaseIDs, id)
132+
}
133+
sort.Slice(leaseIDs, func(i, j int) bool { return leaseIDs[i] < leaseIDs[j] })
134+
for _, id := range leaseIDs {
135+
descHTML = append(descHTML, fmt.Sprintf("<li style=\"margin: 0.25em 0;\"><strong>%d</strong></li>", id))
123136
}
124137
descHTML = append(descHTML, "</ul>")
125138
}

tests/robustness/model/describe_test.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
"errors"
1919
"testing"
2020

21+
"github.com/anishathalye/porcupine"
2122
"github.com/stretchr/testify/assert"
2223

2324
"go.etcd.io/etcd/api/v3/mvccpb"
@@ -170,8 +171,13 @@ func TestModelDescribe(t *testing.T) {
170171
expectDescribe: `range("key16".."key16b", limit=2) -> [], count: 0, rev: 16`,
171172
},
172173
}
174+
ops := []porcupine.Operation{}
173175
for _, tc := range tcs {
174-
assert.Equal(t, tc.expectDescribe, NonDeterministicModel.DescribeOperation(tc.req, tc.resp))
176+
ops = append(ops, porcupine.Operation{Input: tc.req, Output: tc.resp})
177+
}
178+
model := NonDeterministicModel(ModelKeys(ops))
179+
for _, tc := range tcs {
180+
assert.Equal(t, tc.expectDescribe, model.DescribeOperation(tc.req, tc.resp))
175181
}
176182
}
177183

0 commit comments

Comments
 (0)