From 4bd7ee8f3507e597960b30871e7c03f355ee5850 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Mon, 1 May 2017 19:55:51 +0200 Subject: refactored test cases a little --- src/hub/src/spreadspace.org/sfive/s5store_test.go | 78 +++++++++++++++-------- 1 file changed, 53 insertions(+), 25 deletions(-) (limited to 'src/hub') 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) { -- cgit v1.2.3