github.com/xzl8028/xenia-server@v0.0.0-20190809101854-18450a97da63/store/storetest/cluster_discovery_store.go (about) 1 // Copyright (c) 2015-present Xenia, Inc. All Rights Reserved. 2 // See License.txt for license information. 3 4 package storetest 5 6 import ( 7 "testing" 8 9 "time" 10 11 "github.com/xzl8028/xenia-server/model" 12 "github.com/xzl8028/xenia-server/store" 13 "github.com/stretchr/testify/assert" 14 "github.com/stretchr/testify/require" 15 ) 16 17 func TestClusterDiscoveryStore(t *testing.T, ss store.Store) { 18 t.Run("", func(t *testing.T) { testClusterDiscoveryStore(t, ss) }) 19 t.Run("Delete", func(t *testing.T) { testClusterDiscoveryStoreDelete(t, ss) }) 20 t.Run("LastPing", func(t *testing.T) { testClusterDiscoveryStoreLastPing(t, ss) }) 21 t.Run("Exists", func(t *testing.T) { testClusterDiscoveryStoreExists(t, ss) }) 22 t.Run("ClusterDiscoveryGetStore", func(t *testing.T) { testClusterDiscoveryGetStore(t, ss) }) 23 } 24 25 func testClusterDiscoveryStore(t *testing.T, ss store.Store) { 26 discovery := &model.ClusterDiscovery{ 27 ClusterName: "cluster_name", 28 Hostname: "hostname" + model.NewId(), 29 Type: "test_test", 30 } 31 32 if err := ss.ClusterDiscovery().Save(discovery); err != nil { 33 t.Fatal(err) 34 } 35 36 if err := ss.ClusterDiscovery().Cleanup(); err != nil { 37 t.Fatal(err) 38 } 39 } 40 41 func testClusterDiscoveryStoreDelete(t *testing.T, ss store.Store) { 42 discovery := &model.ClusterDiscovery{ 43 ClusterName: "cluster_name", 44 Hostname: "hostname" + model.NewId(), 45 Type: "test_test", 46 } 47 48 if err := ss.ClusterDiscovery().Save(discovery); err != nil { 49 t.Fatal(err) 50 } 51 52 if _, err := ss.ClusterDiscovery().Delete(discovery); err != nil { 53 t.Fatal(err) 54 } 55 } 56 57 func testClusterDiscoveryStoreLastPing(t *testing.T, ss store.Store) { 58 discovery := &model.ClusterDiscovery{ 59 ClusterName: "cluster_name_lastPing", 60 Hostname: "hostname" + model.NewId(), 61 Type: "test_test_lastPing" + model.NewId(), 62 } 63 64 if err := ss.ClusterDiscovery().Save(discovery); err != nil { 65 t.Fatal(err) 66 } 67 68 if err := ss.ClusterDiscovery().SetLastPingAt(discovery); err != nil { 69 t.Fatal(err) 70 } 71 72 ttime := model.GetMillis() 73 74 time.Sleep(1 * time.Second) 75 76 if err := ss.ClusterDiscovery().SetLastPingAt(discovery); err != nil { 77 t.Fatal(err) 78 } 79 80 list, err := ss.ClusterDiscovery().GetAll(discovery.Type, "cluster_name_lastPing") 81 require.Nil(t, err) 82 assert.Len(t, list, 1) 83 84 if list[0].LastPingAt-ttime < 500 { 85 t.Fatal("failed to set time") 86 } 87 88 discovery2 := &model.ClusterDiscovery{ 89 ClusterName: "cluster_name_missing", 90 Hostname: "hostname" + model.NewId(), 91 Type: "test_test_missing", 92 } 93 94 if err := ss.ClusterDiscovery().SetLastPingAt(discovery2); err != nil { 95 t.Fatal(err) 96 } 97 } 98 99 func testClusterDiscoveryStoreExists(t *testing.T, ss store.Store) { 100 discovery := &model.ClusterDiscovery{ 101 ClusterName: "cluster_name_Exists", 102 Hostname: "hostname" + model.NewId(), 103 Type: "test_test_Exists" + model.NewId(), 104 } 105 106 if err := ss.ClusterDiscovery().Save(discovery); err != nil { 107 t.Fatal(err) 108 } 109 110 val, err := ss.ClusterDiscovery().Exists(discovery) 111 require.Nil(t, err) 112 assert.True(t, val) 113 114 discovery.ClusterName = "cluster_name_Exists2" 115 116 val, err = ss.ClusterDiscovery().Exists(discovery) 117 require.Nil(t, err) 118 assert.False(t, val) 119 } 120 121 func testClusterDiscoveryGetStore(t *testing.T, ss store.Store) { 122 testType1 := model.NewId() 123 124 discovery1 := &model.ClusterDiscovery{ 125 ClusterName: "cluster_name", 126 Hostname: "hostname1", 127 Type: testType1, 128 } 129 require.Nil(t, ss.ClusterDiscovery().Save(discovery1)) 130 131 discovery2 := &model.ClusterDiscovery{ 132 ClusterName: "cluster_name", 133 Hostname: "hostname2", 134 Type: testType1, 135 } 136 require.Nil(t, ss.ClusterDiscovery().Save(discovery2)) 137 138 discovery3 := &model.ClusterDiscovery{ 139 ClusterName: "cluster_name", 140 Hostname: "hostname3", 141 Type: testType1, 142 CreateAt: 1, 143 LastPingAt: 1, 144 } 145 require.Nil(t, ss.ClusterDiscovery().Save(discovery3)) 146 147 testType2 := model.NewId() 148 149 discovery4 := &model.ClusterDiscovery{ 150 ClusterName: "cluster_name", 151 Hostname: "hostname1", 152 Type: testType2, 153 } 154 require.Nil(t, ss.ClusterDiscovery().Save(discovery4)) 155 156 list, err := ss.ClusterDiscovery().GetAll(testType1, "cluster_name") 157 require.Nil(t, err) 158 assert.Len(t, list, 2) 159 160 list, err = ss.ClusterDiscovery().GetAll(testType2, "cluster_name") 161 require.Nil(t, err) 162 assert.Len(t, list, 1) 163 164 list, err = ss.ClusterDiscovery().GetAll(model.NewId(), "cluster_name") 165 require.Nil(t, err) 166 assert.Len(t, list, 0) 167 }