Skip to content

Commit 4c0ab2b

Browse files
serathiusnwnt
andcommitted
Use static list of keys in model
Signed-off-by: Marek Siarkowicz <siarkowicz@google.com> Co-authored-by: Nont <9658731+nwnt@users.noreply.github.com>
1 parent fd5f731 commit 4c0ab2b

13 files changed

Lines changed: 475 additions & 200 deletions

tests/robustness/model/describe.go

Lines changed: 36 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -88,38 +88,61 @@ func describeEtcdState(state EtcdState) string {
8888

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

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

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

99-
value := state.KeyValues[key]
106+
value, _ := state.GetValue(key)
100107
if value.Value.Value != "" {
101108
descHTML = append(descHTML, fmt.Sprintf("val: %q, ", value.Value.Value))
102109
}
103110
if value.Value.Hash != 0 {
104111
descHTML = append(descHTML, fmt.Sprintf("hash: %d, ", value.Value.Hash))
105112
}
106-
lease := state.KeyLeases[key]
107-
if lease != 0 {
108-
descHTML = append(descHTML, fmt.Sprintf("lease: %d, ", lease))
109-
}
113+
descHTML = append(descHTML, fmt.Sprintf("mod: %d, ver: %d", value.ModRevision, value.Version))
110114

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

114126
descHTML = append(descHTML, "</ul>")
115127
}
116128

117-
if len(state.Leases) > 0 {
129+
leasesMap := make(map[int64]struct{})
130+
for _, l := range state.KeyLeases {
131+
if l != nil {
132+
leasesMap[l.LeaseID] = struct{}{}
133+
}
134+
}
135+
for _, l := range state.Leases {
136+
if l != nil {
137+
leasesMap[l.LeaseID] = struct{}{}
138+
}
139+
}
140+
if len(leasesMap) > 0 {
118141
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))
142+
leaseIDs := slices.Collect(maps.Keys(leasesMap))
143+
sort.Slice(leaseIDs, func(i, j int) bool { return leaseIDs[i] < leaseIDs[j] })
144+
for _, id := range leaseIDs {
145+
descHTML = append(descHTML, fmt.Sprintf("<li style=\"margin: 0.25em 0;\"><strong>%d</strong></li>", id))
123146
}
124147
descHTML = append(descHTML, "</ul>")
125148
}

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)