github.com/siglens/siglens@v0.0.0-20240328180423-f7ce9ae441ed/pkg/virtualtable/virtualtable_test.go (about) 1 /* 2 Copyright 2023. 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 */ 16 17 package virtualtable 18 19 import ( 20 "bufio" 21 "fmt" 22 "os" 23 "strings" 24 "testing" 25 26 "github.com/siglens/siglens/pkg/config" 27 "github.com/stretchr/testify/assert" 28 ) 29 30 func Test_AddGetVTables(t *testing.T) { 31 32 config.InitializeDefaultConfig() 33 _ = InitVTable() 34 35 VTableBaseDir = "vtabbase/" 36 VTableMappingsDir = "vtabbase/mappings/" 37 VTableTemplatesDir = "vtabbase/templates/" 38 VTableAliasesDir = "vtabbase/aliases/" 39 // special test code only to override the default paths and have idempotent tests 40 _ = CreateVirtTableBaseDirs(VTableBaseDir, VTableMappingsDir, VTableTemplatesDir, VTableAliasesDir) 41 42 mapdata := "" 43 idx1 := "idx-blah1" 44 _ = AddVirtualTableAndMapping(&idx1, &mapdata, 0) 45 idx1 = "idx-blah2" 46 _ = AddVirtualTableAndMapping(&idx1, &mapdata, 0) 47 idx1 = "idx-blah3" 48 _ = AddVirtualTableAndMapping(&idx1, &mapdata, 0) 49 idx1 = "idx-blah4" 50 _ = AddVirtualTableAndMapping(&idx1, &mapdata, 0) 51 52 result, _ := GetVirtualTableNames(0) 53 54 expected := map[string]bool{ 55 "idx-blah1": true, 56 "idx-blah2": true, 57 "idx-blah3": true, 58 "idx-blah4": true} 59 // t.Logf("result=%v", result) 60 61 assert.EqualValues(t, expected, result, fmt.Sprintf("Comparison failed, expected=%v, actual=%v", expected, result)) 62 63 // special test code only to override the default paths and have idempotent tests 64 os.RemoveAll(VTableBaseDir) 65 os.RemoveAll("data/") 66 67 } 68 69 func Test_AddAliases(t *testing.T) { 70 71 _ = InitVTable() 72 // special test code only to override the default paths and have idempotent tests 73 74 VTableBaseDir = "vtabbase/" 75 VTableMappingsDir = "vtabbase/mappings/" 76 VTableTemplatesDir = "vtabbase/templates/" 77 VTableAliasesDir = "vtabbase/aliases/" 78 // special test code only to override the default paths and have idempotent tests 79 _ = CreateVirtTableBaseDirs(VTableBaseDir, VTableMappingsDir, VTableTemplatesDir, VTableAliasesDir) 80 81 expected := map[string]bool{} 82 expected["myalias1"] = true 83 expected["myalias2"] = true 84 expected["myalias3"] = true 85 86 idxname := "myidx1" 87 88 _ = AddAliases(idxname, []string{"myalias1"}, 0) 89 _ = AddAliases(idxname, []string{"myalias2"}, 0) 90 _ = AddAliases(idxname, []string{"myalias3"}, 0) 91 92 actual, _ := GetAliases(idxname, 0) 93 94 assert.EqualValues(t, expected, actual, fmt.Sprintf("Comparison failed, expected=%v, actual=%v", expected, actual)) 95 96 // special test code only to override the default paths and have idempotent tests 97 os.RemoveAll(VTableBaseDir) 98 //os.RemoveAll(vTableBaseDir) 99 } 100 101 func Test_GetIndexNameFromAlias(t *testing.T) { 102 103 _ = InitVTable() 104 os.RemoveAll(VTableBaseDir) 105 106 // special test code only to ove\rride the default paths and have idempotent tests 107 108 VTableBaseDir = "vtabbase/" 109 VTableMappingsDir = "vtabbase/mappings/" 110 VTableTemplatesDir = "vtabbase/templates/" 111 VTableAliasesDir = "vtabbase/aliases/" 112 // special test code only to override the default paths and have idempotent tests 113 _ = CreateVirtTableBaseDirs(VTableBaseDir, VTableMappingsDir, VTableTemplatesDir, VTableAliasesDir) 114 115 idxname := "myidx1" 116 117 _ = AddAliases(idxname, []string{"myalias1"}, 0) 118 _ = AddAliases(idxname, []string{"myalias2"}, 0) 119 _ = AddAliases(idxname, []string{"myalias3"}, 0) 120 121 actual, err := GetIndexNameFromAlias("myalias2", 0) 122 123 assert.Nil(t, err) 124 125 t.Logf("GetIndexNameFromAlias: idxName=%v", actual) 126 assert.EqualValues(t, idxname, actual) 127 128 // special test code only to override the default paths and have idempotent tests 129 os.RemoveAll(VTableBaseDir) 130 } 131 132 func Test_AddRemoveAlias(t *testing.T) { 133 134 _ = InitVTable() 135 os.RemoveAll(VTableBaseDir) 136 137 // special test code only to ove\rride the default paths and have idempotent tests 138 139 VTableBaseDir = "vtabbase/" 140 VTableMappingsDir = "vtabbase/mappings/" 141 VTableTemplatesDir = "vtabbase/templates/" 142 VTableAliasesDir = "vtabbase/aliases/" 143 // special test code only to override the default paths and have idempotent tests 144 _ = CreateVirtTableBaseDirs(VTableBaseDir, VTableMappingsDir, VTableTemplatesDir, VTableAliasesDir) 145 146 idxname := "myidx1" 147 148 _ = AddAliases(idxname, []string{"myalias1"}, 0) 149 150 actual, err := GetIndexNameFromAlias("myalias1", 0) 151 152 // t.Logf("GetIndexNameFromAlias: idxName=%v", actual) 153 154 assert.Nil(t, err) 155 assert.EqualValues(t, idxname, actual) 156 157 _ = RemoveAliases(idxname, []string{"myalias1"}, 0) 158 assert.Nil(t, err) 159 160 actual, err = GetIndexNameFromAlias(idxname, 0) 161 assert.NotNil(t, err) 162 assert.Equal(t, "", actual) 163 164 // special test code only to override the default paths and have idempotent tests 165 os.RemoveAll(VTableBaseDir) 166 167 } 168 169 func Test_DeleteVirtualTable(t *testing.T) { 170 171 indexName := "valtix2" 172 173 _ = InitVTable() 174 175 var check string 176 var sb strings.Builder 177 sb.WriteString(config.GetDataPath() + "ingestnodes/" + config.GetHostID() + "/vtabledata") 178 fname := sb.String() 179 _ = os.MkdirAll(fname, 0764) 180 _, errC := os.Create(fname + VIRTUAL_TAB_FILENAME) 181 assert.Nil(t, errC) 182 check += "valtix1" + "\n" + "valtix3" + "\n" 183 check += indexName 184 t.Logf("VirtualTableNames before deletion = %s", check) 185 err := os.WriteFile(fname+VIRTUAL_TAB_FILENAME+VIRTUAL_TAB_FILE_EXT, []byte(check), 0644) 186 assert.Nil(t, err) 187 t.Logf("VirtualTableName for deletion = %s", indexName) 188 189 err = DeleteVirtualTable(&indexName, 0) 190 assert.Nil(t, err) 191 fd, _ := os.OpenFile(fname+VIRTUAL_TAB_FILENAME+VIRTUAL_TAB_FILE_EXT, os.O_APPEND|os.O_RDONLY, 0644) 192 scanner := bufio.NewScanner(fd) 193 194 var flag bool 195 flag = true 196 for scanner.Scan() { 197 t.Logf("VirtualTableNames left after deletion = %s ", string(scanner.Bytes())) 198 flag = strings.Contains(string(scanner.Bytes()), indexName) 199 assert.Equal(t, flag, false) 200 } 201 assert.Equal(t, flag, false) 202 os.RemoveAll(fname) 203 os.RemoveAll(config.GetRunningConfig().DataPath) 204 205 } 206 207 func Test_ExpandAndReturnIndexNames(t *testing.T) { 208 209 indexPattern := "idx-blah1" 210 indicesEntries := ExpandAndReturnIndexNames(indexPattern, 0, false) 211 indicesExpected := "idx-blah1" 212 assert.Equal(t, indicesExpected, indicesEntries[0]) 213 214 indexPattern = "traces" 215 indicesEntries = ExpandAndReturnIndexNames(indexPattern, 0, false) 216 indicesExpected = "traces" 217 assert.Equal(t, indicesExpected, indicesEntries[0]) 218 219 indexPattern = "service-dependency" 220 indicesEntries = ExpandAndReturnIndexNames(indexPattern, 0, false) 221 indicesExpected = "service-dependency" 222 assert.Equal(t, indicesExpected, indicesEntries[0]) 223 224 indexPattern = "red-traces" 225 indicesEntries = ExpandAndReturnIndexNames(indexPattern, 0, false) 226 indicesExpected = "red-traces" 227 assert.Equal(t, indicesExpected, indicesEntries[0]) 228 229 // special test code only to override the default paths and have idempotent tests 230 os.RemoveAll(config.GetRunningConfig().DataPath) 231 os.RemoveAll(VTableBaseDir) 232 }