github.com/siglens/siglens@v0.0.0-20240328180423-f7ce9ae441ed/pkg/segment/reader/segread/rollupreader_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 segread
    18  
    19  import (
    20  	"os"
    21  	"testing"
    22  
    23  	"github.com/siglens/siglens/pkg/segment/writer"
    24  	"github.com/stretchr/testify/assert"
    25  )
    26  
    27  func TestTimestampRollupReads(t *testing.T) {
    28  	segkey := "data/rollup-readtest"
    29  	err := writer.WriteMockTsRollup(segkey)
    30  	assert.Nil(t, err)
    31  
    32  	rur, err := InitNewRollupReader(segkey, "timestamp", 24)
    33  	assert.Nil(t, err)
    34  	defer rur.Close()
    35  
    36  	// verify day rollups
    37  	dayMapBlks, err := rur.GetDayRollups()
    38  	assert.Nil(t, err)
    39  
    40  	expectedData := make(map[uint64]uint16)
    41  	expectedData[1652227200000] = 412
    42  	expectedData[1652140800000] = 588
    43  	blkZeroMap := dayMapBlks[0] // get blkNum 0
    44  	assert.Equal(t, len(expectedData), len(blkZeroMap))
    45  	for bkey, brup := range blkZeroMap {
    46  		actualmrcount := uint16(brup.MatchedRes.GetNumberOfSetBits())
    47  		expectedmrcount := expectedData[bkey]
    48  		assert.Equal(t, expectedmrcount, actualmrcount, "expectedmrcount=%v, actualmrcount=%v, bkey=%v",
    49  			expectedmrcount, actualmrcount, bkey)
    50  	}
    51  
    52  	// verify hour rollups
    53  	hourMapBlks, err := rur.GetHourRollups()
    54  	assert.Nil(t, err)
    55  
    56  	expectedData = make(map[uint64]uint16)
    57  	expectedData[1652220000000] = 88
    58  	expectedData[1652223600000] = 500
    59  	expectedData[1652227200000] = 412
    60  
    61  	blkZeroMap = hourMapBlks[0] // get blkNum 0
    62  	assert.Equal(t, len(expectedData), len(blkZeroMap))
    63  	for bkey, brup := range blkZeroMap {
    64  		actualmrcount := uint16(brup.MatchedRes.GetNumberOfSetBits())
    65  		expectedmrcount := expectedData[bkey]
    66  		assert.Equal(t, expectedmrcount, actualmrcount, "expectedmrcount=%v, actualmrcount=%v, bkey=%v",
    67  			expectedmrcount, actualmrcount, bkey)
    68  	}
    69  
    70  	// verify min rollups
    71  	minMapBlks, err := rur.GetMinRollups()
    72  	assert.Nil(t, err)
    73  	assert.Equal(t, 1, len(minMapBlks))
    74  
    75  	// top-of-min validations
    76  	expectedData = make(map[uint64]uint16)
    77  	expectedData[1652224380000] = 8
    78  	expectedData[1652226300000] = 9
    79  	expectedData[1652226480000] = 9
    80  	expectedData[1652227140000] = 8
    81  	expectedData[1652227440000] = 8
    82  	expectedData[1652230020000] = 8
    83  	expectedData[1652223780000] = 9
    84  	expectedData[1652226060000] = 8
    85  	expectedData[1652228700000] = 8
    86  	expectedData[1652225220000] = 9
    87  	expectedData[1652227260000] = 8
    88  	expectedData[1652223240000] = 9
    89  	expectedData[1652225760000] = 9
    90  	expectedData[1652226120000] = 9
    91  	expectedData[1652227620000] = 8
    92  	expectedData[1652229900000] = 9
    93  	expectedData[1652225820000] = 8
    94  	expectedData[1652225880000] = 8
    95  	expectedData[1652226840000] = 9
    96  	expectedData[1652226900000] = 8
    97  	expectedData[1652227020000] = 9
    98  	expectedData[1652229960000] = 8
    99  	expectedData[1652227740000] = 9
   100  	expectedData[1652224440000] = 8
   101  	expectedData[1652226180000] = 8
   102  	expectedData[1652228340000] = 8
   103  	expectedData[1652229780000] = 8
   104  	expectedData[1652223540000] = 8
   105  	expectedData[1652223720000] = 8
   106  	expectedData[1652227680000] = 8
   107  	expectedData[1652228520000] = 8
   108  	expectedData[1652228640000] = 9
   109  	expectedData[1652227500000] = 8
   110  	expectedData[1652229600000] = 8
   111  	expectedData[1652224200000] = 8
   112  	expectedData[1652227080000] = 8
   113  	expectedData[1652227380000] = 9
   114  	expectedData[1652228220000] = 8
   115  	expectedData[1652228460000] = 9
   116  	expectedData[1652228820000] = 9
   117  	expectedData[1652222940000] = 5
   118  	expectedData[1652223000000] = 8
   119  	expectedData[1652224740000] = 8
   120  	expectedData[1652225700000] = 8
   121  	expectedData[1652228160000] = 8
   122  	expectedData[1652229360000] = 9
   123  	expectedData[1652224620000] = 8
   124  	expectedData[1652227980000] = 8
   125  	expectedData[1652228100000] = 9
   126  	expectedData[1652228940000] = 8
   127  	expectedData[1652229660000] = 8
   128  	expectedData[1652227920000] = 9
   129  	expectedData[1652224800000] = 8
   130  	expectedData[1652225460000] = 8
   131  	expectedData[1652225940000] = 9
   132  	expectedData[1652227320000] = 8
   133  	expectedData[1652229120000] = 8
   134  	expectedData[1652229300000] = 8
   135  	expectedData[1652224140000] = 9
   136  	expectedData[1652224260000] = 8
   137  	expectedData[1652225040000] = 9
   138  	expectedData[1652225520000] = 8
   139  	expectedData[1652226720000] = 8
   140  	expectedData[1652229240000] = 8
   141  	expectedData[1652224080000] = 8
   142  	expectedData[1652228760000] = 8
   143  	expectedData[1652229060000] = 8
   144  	expectedData[1652230080000] = 9
   145  	expectedData[1652224920000] = 8
   146  	expectedData[1652223120000] = 8
   147  	expectedData[1652224560000] = 8
   148  	expectedData[1652226660000] = 9
   149  	expectedData[1652230140000] = 3
   150  	expectedData[1652229420000] = 8
   151  	expectedData[1652224320000] = 9
   152  	expectedData[1652226360000] = 8
   153  	expectedData[1652226540000] = 8
   154  	expectedData[1652226780000] = 8
   155  	expectedData[1652227200000] = 9
   156  	expectedData[1652227560000] = 9
   157  	expectedData[1652226960000] = 8
   158  	expectedData[1652223480000] = 8
   159  	expectedData[1652223660000] = 8
   160  	expectedData[1652224860000] = 9
   161  	expectedData[1652225280000] = 8
   162  	expectedData[1652225340000] = 8
   163  	expectedData[1652226000000] = 8
   164  	expectedData[1652224020000] = 8
   165  	expectedData[1652228400000] = 8
   166  	expectedData[1652228580000] = 8
   167  	expectedData[1652229000000] = 9
   168  	expectedData[1652223840000] = 8
   169  	expectedData[1652224500000] = 9
   170  	expectedData[1652225100000] = 8
   171  	expectedData[1652223900000] = 8
   172  	expectedData[1652226240000] = 8
   173  	expectedData[1652225580000] = 9
   174  	expectedData[1652225640000] = 8
   175  	expectedData[1652227800000] = 8
   176  	expectedData[1652227860000] = 8
   177  	expectedData[1652228880000] = 8
   178  	expectedData[1652229840000] = 8
   179  	expectedData[1652223600000] = 9
   180  	expectedData[1652225400000] = 9
   181  	expectedData[1652226420000] = 8
   182  	expectedData[1652223180000] = 8
   183  	expectedData[1652226600000] = 8
   184  	expectedData[1652229480000] = 8
   185  	expectedData[1652229720000] = 9
   186  	expectedData[1652223360000] = 8
   187  	expectedData[1652224680000] = 9
   188  	expectedData[1652224980000] = 8
   189  	expectedData[1652225160000] = 8
   190  	expectedData[1652228040000] = 8
   191  	expectedData[1652229540000] = 9
   192  	expectedData[1652223060000] = 9
   193  	expectedData[1652223300000] = 8
   194  	expectedData[1652223420000] = 9
   195  	expectedData[1652223960000] = 9
   196  	expectedData[1652228280000] = 9
   197  	expectedData[1652229180000] = 9
   198  
   199  	blkZeroMap = minMapBlks[0]
   200  
   201  	assert.Equal(t, len(expectedData), len(blkZeroMap))
   202  	for bkey, brup := range blkZeroMap {
   203  		actualmrcount := uint16(brup.MatchedRes.GetNumberOfSetBits())
   204  		expectedmrcount := expectedData[bkey]
   205  		assert.Equal(t, expectedmrcount, actualmrcount, "expectedmrcount=%v, actualmrcount=%v, bkey=%v",
   206  			expectedmrcount, actualmrcount, bkey)
   207  	}
   208  
   209  	os.RemoveAll(segkey)
   210  }