| // Copyright 2015 The Vanadium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package measure_test |
| |
| import ( |
| "reflect" |
| "testing" |
| |
| _ "v.io/x/ref/runtime/factories/roaming" |
| sbtu "v.io/x/ref/services/syncbase/testutil" |
| "v.io/x/sensorlog/internal/config" |
| "v.io/x/sensorlog/internal/measure" |
| "v.io/x/sensorlog/internal/sbmodel" |
| "v.io/x/sensorlog/internal/sbutil" |
| ) |
| |
| func TestCreateSyncgroup(t *testing.T) { |
| _, ctxMeasured, sbName, _, cleanup := sbtu.SetupOrDieCustom("one", "one:sb", nil) |
| defer cleanup() |
| |
| // Open (create) db as measured. |
| db, err := sbutil.CreateOrOpenDB(ctxMeasured, sbName, sbmodel.MeasuredCollections) |
| if err != nil { |
| t.Fatalf("CreateOrOpenDB should have succeeded, got error: %v", err) |
| } |
| |
| devId := "measured1" |
| admin := "root:two" |
| syncMts := []string{} |
| |
| // Creating the syncgroup should succeed. |
| if err := measure.InitSyncgroup(ctxMeasured, db, devId, admin, sbName, syncMts); err != nil { |
| t.Fatalf("InitSyncgroup failed: %v", err) |
| } |
| |
| sgName := config.SyncgroupName(sbName, devId) |
| if sgs, err := db.GetSyncgroupNames(ctxMeasured); err != nil { |
| t.Fatalf("GetSyncgroupNames failed: %v", err) |
| } else if got, want := sgs, []string{sgName}; !reflect.DeepEqual(got, want) { |
| t.Errorf("GetSyncgroupNames got: %v, want: %v", got, want) |
| } |
| |
| // Creating the syncgroup should be idempotent. |
| if err := measure.InitSyncgroup(ctxMeasured, db, devId, admin, sbName, syncMts); err != nil { |
| t.Errorf("InitSyncgroup should be idempotent, retry failed: %v", err) |
| } |
| |
| // measured should have dropped privileges on <StreamDefCollection>/<devId>. |
| // TODO(ivanpi): Prefix ACLs have been removed, use collection ACLs. |
| } |