Skip to content

Commit bff66ee

Browse files
committed
MemoryRecord name can be obfuscated
1 parent 110522d commit bff66ee

File tree

2 files changed

+51
-10
lines changed

2 files changed

+51
-10
lines changed

pkg/recorder/recorder.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ func (r *Recorder) Record(rec record.Record) error {
8585
return fmt.Errorf("record %s(size=%d) exceeds the archive size limit %d and will not be included in the archive",
8686
recordName, recordSize, r.maxArchiveSize)
8787
}
88-
r.records[recordName] = memoryRecord
88+
r.records[memoryRecord.Name] = memoryRecord
8989
r.size += recordSize
9090
return nil
9191
}
@@ -146,7 +146,7 @@ func (r *Recorder) PeriodicallyPrune(ctx context.Context, reported alreadyReport
146146
func (r *Recorder) has(re record.Record) bool {
147147
existing, ok := r.records[re.Filename()]
148148
if ok {
149-
if len(re.Fingerprint) > 0 && re.Fingerprint == existing.Fingerprint {
149+
if re.Fingerprint == existing.Fingerprint {
150150
return true
151151
}
152152
}

pkg/recorder/recorder_test.go

+49-8
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,11 @@ func (d *driverMock) Prune(time.Time) error {
5858
return args.Error(1)
5959
}
6060

61-
func newRecorder(maxArchiveSize int64) Recorder {
61+
func newRecorder(maxArchiveSize int64, clusterBaseDomain string) Recorder {
6262
driver := driverMock{}
6363
driver.On("Save").Return(nil, nil)
6464

65-
anonymizer, _ := anonymization.NewAnonymizer("", nil, nil)
65+
anonymizer, _ := anonymization.NewAnonymizer(clusterBaseDomain, nil, nil)
6666

6767
interval, _ := time.ParseDuration("1m")
6868
return Recorder{
@@ -76,7 +76,7 @@ func newRecorder(maxArchiveSize int64) Recorder {
7676
}
7777

7878
func Test_Record(t *testing.T) {
79-
rec := newRecorder(MaxArchiveSize)
79+
rec := newRecorder(MaxArchiveSize, "")
8080
err := rec.Record(record.Record{
8181
Name: mock1Name,
8282
Item: RawReport{Data: "mock1"},
@@ -86,7 +86,7 @@ func Test_Record(t *testing.T) {
8686
}
8787

8888
func Test_Record_Duplicated(t *testing.T) {
89-
rec := newRecorder(MaxArchiveSize)
89+
rec := newRecorder(MaxArchiveSize, "")
9090
_ = rec.Record(record.Record{
9191
Name: mock1Name,
9292
Item: RawReport{Data: "mock1"},
@@ -102,7 +102,7 @@ func Test_Record_Duplicated(t *testing.T) {
102102
}
103103

104104
func Test_Record_CantBeSerialized(t *testing.T) {
105-
rec := newRecorder(MaxArchiveSize)
105+
rec := newRecorder(MaxArchiveSize, "")
106106
err := rec.Record(record.Record{
107107
Name: mock1Name,
108108
Item: RawInvalidReport{},
@@ -111,7 +111,7 @@ func Test_Record_CantBeSerialized(t *testing.T) {
111111
}
112112

113113
func Test_Record_Flush(t *testing.T) {
114-
rec := newRecorder(MaxArchiveSize)
114+
rec := newRecorder(MaxArchiveSize, "")
115115
for i := range []int{1, 2, 3} {
116116
_ = rec.Record(record.Record{
117117
Name: fmt.Sprintf("config/mock%d", i),
@@ -124,15 +124,15 @@ func Test_Record_Flush(t *testing.T) {
124124
}
125125

126126
func Test_Record_FlushEmptyRecorder(t *testing.T) {
127-
rec := newRecorder(MaxArchiveSize)
127+
rec := newRecorder(MaxArchiveSize, "")
128128
err := rec.Flush()
129129
assert.Nil(t, err)
130130
}
131131

132132
func Test_Record_ArchiveSizeExceeded(t *testing.T) {
133133
data := "data bigger than 4 bytes"
134134
maxArchiveSize := int64(4)
135-
rec := newRecorder(maxArchiveSize)
135+
rec := newRecorder(maxArchiveSize, "")
136136
err := rec.Record(record.Record{
137137
Name: mock1Name,
138138
Item: RawReport{
@@ -148,3 +148,44 @@ func Test_Record_ArchiveSizeExceeded(t *testing.T) {
148148
len([]byte(data)),
149149
maxArchiveSize))
150150
}
151+
152+
func Test_Record_SizeDoesntGrowWithSameRecords(t *testing.T) {
153+
data := "testdata"
154+
testRec := record.Record{
155+
Name: mock1Name,
156+
Item: RawReport{
157+
Data: data,
158+
},
159+
}
160+
rec := newRecorder(MaxArchiveSize, "")
161+
err := rec.Record(testRec)
162+
assert.Nil(t, err)
163+
// record again the same record
164+
err = rec.Record(testRec)
165+
assert.Nil(t, err)
166+
167+
// check that size refers only to one record data
168+
assert.Equal(t, rec.size, int64(len(data)))
169+
err = rec.Flush()
170+
assert.Nil(t, err)
171+
assert.Equal(t, rec.size, int64(0))
172+
}
173+
174+
func Test_ObfuscatedRecord_NameCorrect(t *testing.T) {
175+
clusterBaseDomain := "test"
176+
testRecordName := fmt.Sprintf("%s/%s-node-1", mock1Name, clusterBaseDomain)
177+
obfuscatedRecordName := fmt.Sprintf("%s/%s-node-1", mock1Name, anonymization.ClusterBaseDomainPlaceholder)
178+
rec := newRecorder(MaxArchiveSize, clusterBaseDomain)
179+
err := rec.Record(record.Record{
180+
Name: testRecordName,
181+
Item: RawReport{
182+
Data: "some data",
183+
},
184+
})
185+
assert.Nil(t, err)
186+
_, exists := rec.records[obfuscatedRecordName]
187+
assert.True(t, exists, "can't find %s record name", testRecordName)
188+
err = rec.Flush()
189+
assert.Nil(t, err)
190+
assert.Equal(t, rec.size, int64(0))
191+
}

0 commit comments

Comments
 (0)