feat: Add MeasurementNames method to MeasurementFieldSet (#23173)

pull/23202/head
Andrew Charlton 2022-03-15 10:21:38 +00:00 committed by GitHub
parent 7d310c2241
commit 4e08604e48
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 33 additions and 0 deletions

View File

@ -1939,6 +1939,20 @@ func (fs *MeasurementFieldSet) Bytes() int {
return b
}
// MeasurementNames returns the names of all of the measurements in the field set in
// lexographical order.
func (fs *MeasurementFieldSet) MeasurementNames() []string {
fs.mu.RLock()
defer fs.mu.RUnlock()
names := make([]string, 0, len(fs.fields))
for name := range fs.fields {
names = append(names, name)
}
sort.Strings(names)
return names
}
// Fields returns fields for a measurement by name.
func (fs *MeasurementFieldSet) Fields(name []byte) *MeasurementFields {
fs.mu.RLock()

View File

@ -28,6 +28,7 @@ import (
_ "github.com/influxdata/influxdb/v2/tsdb/engine"
_ "github.com/influxdata/influxdb/v2/tsdb/index"
"github.com/influxdata/influxql"
"github.com/stretchr/testify/assert"
)
func TestShardWriteAndIndex(t *testing.T) {
@ -1705,6 +1706,24 @@ func TestMeasurementFieldSet_ConcurrentSave(t *testing.T) {
}
}
func TestMeasurementFieldSet_MeasurementNames(t *testing.T) {
dir := t.TempDir()
path := filepath.Join(dir, "fields.idx")
mf, err := tsdb.NewMeasurementFieldSet(path)
if err != nil {
t.Fatalf("NewMeasurementFieldSet error: %v", err)
}
defer mf.Close()
mf.CreateFieldsIfNotExists([]byte("cpu"))
mf.CreateFieldsIfNotExists([]byte("memory"))
mf.CreateFieldsIfNotExists([]byte("disk_usage"))
exp := []string{"cpu", "disk_usage", "memory"}
got := mf.MeasurementNames()
assert.Equal(t, exp, got)
}
func testFieldMaker(t *testing.T, wg *sync.WaitGroup, mf *tsdb.MeasurementFieldSet, measurement string, fieldNames []string) {
defer wg.Done()
fields := mf.CreateFieldsIfNotExists([]byte(measurement))