github.com/siglens/siglens@v0.0.0-20240328180423-f7ce9ae441ed/pkg/es/reader/resolveIndexHandler_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 reader
    18  
    19  import (
    20  	"fmt"
    21  	"os"
    22  	"testing"
    23  
    24  	"github.com/siglens/siglens/pkg/config"
    25  	esutils "github.com/siglens/siglens/pkg/es/utils"
    26  	vtable "github.com/siglens/siglens/pkg/virtualtable"
    27  	"github.com/stretchr/testify/assert"
    28  )
    29  
    30  func Test_ExpandAndReturnIndexNames(t *testing.T) {
    31  	config.InitializeDefaultConfig()
    32  	_ = vtable.InitVTable()
    33  
    34  	vTableBaseDir := "vtabbase/"
    35  	vTableMappingsDir := "vtabbase/mappings/"
    36  	vTableTemplatesDir := "vtabbase/templates/"
    37  	vTableAliasesDir := "vtabbase/aliases/"
    38  	// special test code only to override the default paths and have idempotent tests
    39  	_ = vtable.CreateVirtTableBaseDirs(vTableBaseDir, vTableMappingsDir, vTableTemplatesDir, vTableAliasesDir)
    40  
    41  	mapdata := ""
    42  	idx1 := "idx-blah1"
    43  	_ = vtable.AddVirtualTableAndMapping(&idx1, &mapdata, 0)
    44  	idx1 = "idx-blah2"
    45  	_ = vtable.AddVirtualTableAndMapping(&idx1, &mapdata, 0)
    46  	subStringIndex := "blah3-idx"
    47  	_ = vtable.AddVirtualTableAndMapping(&subStringIndex, &mapdata, 0)
    48  	idx1 = "traces"
    49  	_ = vtable.AddVirtualTableAndMapping(&idx1, &mapdata, 0)
    50  	idx1 = "red-traces"
    51  	_ = vtable.AddVirtualTableAndMapping(&idx1, &mapdata, 0)
    52  	idx1 = "service-dependency"
    53  	_ = vtable.AddVirtualTableAndMapping(&idx1, &mapdata, 0)
    54  
    55  	allVirtualTableNames, _ := vtable.GetVirtualTableNames(0)
    56  	expected := map[string]bool{
    57  		"idx-blah1":          true,
    58  		"idx-blah2":          true,
    59  		"blah3-idx":          true,
    60  		"traces":             true,
    61  		"red-traces":         true,
    62  		"service-dependency": true}
    63  
    64  	assert.EqualValues(t, expected, allVirtualTableNames, fmt.Sprintf("Comparison failed, expected=%v, actual=%v", expected, allVirtualTableNames))
    65  
    66  	indexPattern := "idx*"
    67  
    68  	indicesEntries, aliasesEntries, err := ExpandAndReturnIndexNames(indexPattern, allVirtualTableNames, 0)
    69  	assert.Nil(t, err)
    70  
    71  	indicesExpected := []esutils.ResolveIndexEntry{
    72  		esutils.ResolveIndexEntry{
    73  			Name:       "idx-blah1",
    74  			Attributes: []string{"open"},
    75  			Aliases:    []string{}},
    76  		esutils.ResolveIndexEntry{
    77  			Name:       "idx-blah2",
    78  			Attributes: []string{"open"},
    79  			Aliases:    []string{}}}
    80  
    81  	aliasesExpected := []esutils.ResolveAliasEntry{}
    82  
    83  	for i := range indicesExpected {
    84  		assert.Contains(t, indicesEntries, indicesExpected[i])
    85  	}
    86  	assert.EqualValues(t, aliasesExpected, aliasesEntries, fmt.Sprintf("Comparison failed, expected=%v, actual=%v", aliasesExpected, aliasesEntries))
    87  
    88  	indexPattern = "a*"
    89  
    90  	indicesEntries, aliasesEntries, err = ExpandAndReturnIndexNames(indexPattern, allVirtualTableNames, 0)
    91  	assert.Nil(t, err)
    92  
    93  	indicesExpected = []esutils.ResolveIndexEntry{}
    94  	aliasesExpected = []esutils.ResolveAliasEntry{}
    95  
    96  	assert.EqualValues(t, indicesExpected, indicesEntries, fmt.Sprintf("Comparison failed, expected=%v, actual=%v", indicesExpected, indicesEntries))
    97  	assert.EqualValues(t, aliasesExpected, aliasesEntries, fmt.Sprintf("Comparison failed, expected=%v, actual=%v", aliasesExpected, aliasesEntries))
    98  
    99  	indexPattern = "idx-blah1"
   100  
   101  	indicesEntries, aliasesEntries, err = ExpandAndReturnIndexNames(indexPattern, allVirtualTableNames, 0)
   102  	assert.Nil(t, err)
   103  
   104  	indicesExpected = []esutils.ResolveIndexEntry{
   105  		esutils.ResolveIndexEntry{
   106  			Name:       "idx-blah1",
   107  			Attributes: []string{"open"},
   108  			Aliases:    []string{}}}
   109  
   110  	aliasesExpected = []esutils.ResolveAliasEntry{}
   111  
   112  	assert.EqualValues(t, indicesExpected, indicesEntries, fmt.Sprintf("Comparison failed, expected=%v, actual=%v", indicesExpected, indicesEntries))
   113  	assert.EqualValues(t, aliasesExpected, aliasesEntries, fmt.Sprintf("Comparison failed, expected=%v, actual=%v", aliasesExpected, aliasesEntries))
   114  
   115  	indexPattern = "*idx*"
   116  
   117  	indicesEntries, aliasesEntries, err = ExpandAndReturnIndexNames(indexPattern, allVirtualTableNames, 0)
   118  	assert.Nil(t, err)
   119  
   120  	indicesExpected = []esutils.ResolveIndexEntry{
   121  		{
   122  			Name:       "idx-blah1",
   123  			Attributes: []string{"open"},
   124  			Aliases:    []string{},
   125  		},
   126  		{
   127  			Name:       "idx-blah2",
   128  			Attributes: []string{"open"},
   129  			Aliases:    []string{},
   130  		},
   131  		{
   132  			Name:       "blah3-idx",
   133  			Attributes: []string{"open"},
   134  			Aliases:    []string{},
   135  		},
   136  	}
   137  	for i := range indicesExpected {
   138  		assert.Contains(t, indicesEntries, indicesExpected[i])
   139  	}
   140  	assert.Len(t, indicesEntries, len(indicesExpected))
   141  	assert.EqualValues(t, aliasesExpected, aliasesEntries, fmt.Sprintf("Comparison failed, expected=%v, actual=%v", aliasesExpected, aliasesEntries))
   142  
   143  	indexPattern = "bl*"
   144  
   145  	indicesEntries, aliasesEntries, err = ExpandAndReturnIndexNames(indexPattern, allVirtualTableNames, 0)
   146  	assert.Nil(t, err)
   147  
   148  	indicesExpected = []esutils.ResolveIndexEntry{
   149  		{
   150  			Name:       "blah3-idx",
   151  			Attributes: []string{"open"},
   152  			Aliases:    []string{},
   153  		},
   154  	}
   155  	assert.EqualValues(t, indicesExpected, indicesEntries, fmt.Sprintf("Comparison failed, expected=%v, actual=%v", indicesExpected, indicesEntries))
   156  	assert.EqualValues(t, aliasesExpected, aliasesEntries, fmt.Sprintf("Comparison failed, expected=%v, actual=%v", aliasesExpected, aliasesEntries))
   157  
   158  	indexPattern = "*"
   159  
   160  	indicesEntries, aliasesEntries, err = ExpandAndReturnIndexNames(indexPattern, allVirtualTableNames, 0)
   161  	assert.Nil(t, err)
   162  
   163  	indicesExpected = []esutils.ResolveIndexEntry{
   164  		{
   165  			Name:       "idx-blah1",
   166  			Attributes: []string{"open"},
   167  			Aliases:    []string{},
   168  		},
   169  		{
   170  			Name:       "idx-blah2",
   171  			Attributes: []string{"open"},
   172  			Aliases:    []string{},
   173  		},
   174  		{
   175  			Name:       "blah3-idx",
   176  			Attributes: []string{"open"},
   177  			Aliases:    []string{},
   178  		},
   179  	}
   180  	assert.EqualValues(t, len(indicesExpected), len(indicesEntries), fmt.Sprintf("Comparison failed, expected=%v, actual=%v", indicesExpected, indicesEntries))
   181  	assert.EqualValues(t, len(aliasesExpected), len(aliasesEntries), fmt.Sprintf("Comparison failed, expected=%v, actual=%v", aliasesExpected, aliasesEntries))
   182  
   183  	indexPattern = "red-traces"
   184  
   185  	indicesEntries, aliasesEntries, err = ExpandAndReturnIndexNames(indexPattern, allVirtualTableNames, 0)
   186  	assert.Nil(t, err)
   187  
   188  	indicesExpected = []esutils.ResolveIndexEntry{
   189  		{
   190  			Name:       "red-traces",
   191  			Attributes: []string{"open"},
   192  			Aliases:    []string{},
   193  		},
   194  	}
   195  	assert.EqualValues(t, indicesExpected, indicesEntries, fmt.Sprintf("Comparison failed, expected=%v, actual=%v", indicesExpected, indicesEntries))
   196  	assert.EqualValues(t, aliasesExpected, aliasesEntries, fmt.Sprintf("Comparison failed, expected=%v, actual=%v", aliasesExpected, aliasesEntries))
   197  
   198  	indexPattern = "service-dependency"
   199  
   200  	indicesEntries, aliasesEntries, err = ExpandAndReturnIndexNames(indexPattern, allVirtualTableNames, 0)
   201  	assert.Nil(t, err)
   202  
   203  	indicesExpected = []esutils.ResolveIndexEntry{
   204  		{
   205  			Name:       "service-dependency",
   206  			Attributes: []string{"open"},
   207  			Aliases:    []string{},
   208  		},
   209  	}
   210  	assert.EqualValues(t, indicesExpected, indicesEntries, fmt.Sprintf("Comparison failed, expected=%v, actual=%v", indicesExpected, indicesEntries))
   211  	assert.EqualValues(t, aliasesExpected, aliasesEntries, fmt.Sprintf("Comparison failed, expected=%v, actual=%v", aliasesExpected, aliasesEntries))
   212  
   213  	// special test code only to override the default paths and have idempotent tests
   214  	os.RemoveAll(config.GetRunningConfig().DataPath)
   215  	os.RemoveAll(vTableBaseDir)
   216  }