summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2017-05-01 19:55:51 +0200
committerChristian Pointner <equinox@spreadspace.org>2017-05-01 19:55:51 +0200
commit4bd7ee8f3507e597960b30871e7c03f355ee5850 (patch)
tree3153b11ddbe091eb7c272604466e19336730b11d
parentadded test cases for sources (diff)
refactored test cases a little
-rw-r--r--src/hub/src/spreadspace.org/sfive/s5store_test.go78
1 files changed, 53 insertions, 25 deletions
diff --git a/src/hub/src/spreadspace.org/sfive/s5store_test.go b/src/hub/src/spreadspace.org/sfive/s5store_test.go
index eb3d8a7..3284c87 100644
--- a/src/hub/src/spreadspace.org/sfive/s5store_test.go
+++ b/src/hub/src/spreadspace.org/sfive/s5store_test.go
@@ -58,7 +58,7 @@ var (
ClientData{"172.16.0.2", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/57.0.2987.98 Chrome/57.0.2987.98 Safari/537.36", 6400}}
)
-func generateTestData(n int) (data []DataUpdateFull, numSrcs int) {
+func generateTestData(n int) ([]DataUpdateFull, int) {
hostnames := []string{"streamer1", "streamer2"}
contents := []string{"av", "audio"}
formats := []string{"webm", "flash", "hls"}
@@ -67,10 +67,11 @@ func generateTestData(n int) (data []DataUpdateFull, numSrcs int) {
duration := int64(15000)
starttime := time.Now()
- numSrcs = len(hostnames) * len(contents) * len(formats) * len(qualities)
+ numSrcs := len(hostnames) * len(contents) * len(formats) * len(qualities)
if n < 0 {
n = numSrcs
}
+ var data []DataUpdateFull
for i := 0; i < n; i += numSrcs {
for _, hostname := range hostnames {
for _, content := range contents {
@@ -98,7 +99,7 @@ func generateTestData(n int) (data []DataUpdateFull, numSrcs int) {
}
starttime = starttime.Add(time.Duration(duration) * time.Millisecond)
}
- return
+ return data[:n], numSrcs
}
func TestMain(m *testing.M) {
@@ -129,7 +130,7 @@ func TestOpen(t *testing.T) {
t.Fatalf("opening store using a directory should throw an error")
}
- // exisitng but non-database file
+ // exisiting but non-database file
os.Remove(testBoltPath)
if f, err := os.Create(testBoltPath); err != nil {
t.Fatalf("unexpected error: %v", err)
@@ -322,29 +323,32 @@ func TestAppendAndFetch(t *testing.T) {
t.Fatalf("failed to fetch update\nactual: %v\nexpected: %v\n", out, expected)
}
- // remote dataupdate
- in = DataUpdateFull{0, "7411836d-58f7-4a36-85d6-409b4e4ca30c", 3, sourceData, upd}
- if err = store.Append(in); err != nil {
+ // append many
+ var ins []DataUpdateFull
+ upd.StartTime = upd.StartTime.Add(time.Duration(upd.Duration) * time.Millisecond)
+ ins = append(ins, DataUpdateFull{0, "", -1, sourceData, upd})
+ upd.StartTime = upd.StartTime.Add(time.Duration(upd.Duration) * time.Millisecond)
+ upd.Data.Clients = nil
+ ins = append(ins, DataUpdateFull{0, "", -1, sourceData, upd})
+ if err = store.AppendMany(ins); err != nil {
t.Fatalf("failed to append update: %v", err)
}
- out, err = store.GetUpdate(2)
- if err != nil {
- t.Fatalf("failed to fetch update: %v", err)
+ for i := 0; i < 2; i = i + 1 {
+ out, err = store.GetUpdate(i + 2)
+ if err != nil {
+ t.Fatalf("failed to fetch update: %v", err)
- }
- out.StartTime = out.StartTime.UTC() // this would normally be handled by the protocol encoder
- expected = in
+ }
+ out.StartTime = out.StartTime.UTC() // this would normally be handled by the protocol encoder
+ expected = ins[i]
+ expected.SourceHubUuid = store.GetStoreId()
+ expected.SourceHubDataUpdateId = i + 2
- if !reflect.DeepEqual(expected, out) {
- t.Fatalf("failed to fetch update\nactual: %v\nexpected: %v\n", out, expected)
+ if !reflect.DeepEqual(expected, out) {
+ t.Fatalf("failed to fetch update\nactual: %v\nexpected: %v\n", out, expected)
+ }
}
-
- //
- // TODO: more example data and cleanup this copy&paste hell...
- // TODO: add tests for
- // * store.GetSource(s)
- //
}
func TestReadOnly(t *testing.T) {
@@ -482,15 +486,21 @@ func TestForwardedDataUpdates(t *testing.T) {
}
defer store.Close()
+ // generate/append some local updates
+ data, _ := generateTestData(10)
+ if err := store.AppendMany(data); err != nil {
+ t.Fatalf("unexpected error: %v", err)
+ }
+
forwardedHub := "05defdfa-e7d1-4ca8-8b5c-02abb0088d29"
- // check if there are no updates in store
+ // check if there are no updates for this hub in store
lastId, err := store.GetLastUpdateForUuid(forwardedHub)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if lastId != 0 {
- t.Fatalf("failed to get last update ID: got %d updates, expected 0", lastId)
+ t.Fatalf("failed to get last update ID: %d, expected 0", lastId)
}
// get list of all hubs
@@ -514,7 +524,7 @@ func TestForwardedDataUpdates(t *testing.T) {
for i := 0; i < 3; i = i + 1 {
in := DataUpdateFull{0, "", -1, sourceData, upd}
in.SourceHubUuid = forwardedHub
- in.SourceHubDataUpdateId = i + 1
+ in.SourceHubDataUpdateId = 3 - i // out of order
if err = store.Append(in); err != nil {
t.Fatalf("unexpected error: %v", err)
}
@@ -522,7 +532,18 @@ func TestForwardedDataUpdates(t *testing.T) {
upd.StartTime = upd.StartTime.Add(time.Duration(upd.Duration) * time.Millisecond)
}
- // check if there are 3 updates in store
+ out, err := store.GetUpdatesAfter(10, 3)
+ if err != nil {
+ t.Fatalf("unexpected error: %v", err)
+ }
+ for i, _ := range out {
+ out[i].StartTime = out[i].StartTime.UTC() // this would normally be handled by the protocol encoder
+ }
+ if !reflect.DeepEqual(out, expected) {
+ t.Fatalf("failed to fetch source\nactual: %v\nexpected: %v\n", out, expected)
+ }
+
+ // check if the last update for this hub is 3
lastId, err = store.GetLastUpdateForUuid(forwardedHub)
if err != nil {
t.Fatalf("unexpected error: %v", err)
@@ -545,6 +566,13 @@ func TestForwardedDataUpdates(t *testing.T) {
if hubs[1] != forwardedHub {
t.Fatalf("second hub UUID is wrong: %s, expected: %s", hubs[1], forwardedHub)
}
+
+ // check if the last update is now 13
+ lastId, _ = store.GetLastUpdateId()
+ if lastId != 13 {
+ t.Fatalf("failed to get last update ID: got %d updates, expected 3", lastId)
+ }
+
}
func TestGetSources(t *testing.T) {