github.com/siglens/siglens@v0.0.0-20240328180423-f7ce9ae441ed/pkg/utils/dateutils_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 utils
    18  
    19  import (
    20  	"testing"
    21  
    22  	"github.com/stretchr/testify/assert"
    23  )
    24  
    25  func Test_SanitizeHistogramInterval(t *testing.T) {
    26  
    27  	// check for 1m interval
    28  	startEpoch := uint64(0)
    29  	endEpoch := uint64(3600_000)
    30  	interval := uint64(1)
    31  	expected := uint64(60_000) // 1m
    32  	actual, err := SanitizeHistogramInterval(startEpoch, endEpoch, interval)
    33  	assert.Nil(t, err)
    34  	assert.Equal(t, expected, actual, "expected  %v, actual %v", expected, actual)
    35  
    36  	// check for 5m interval
    37  	startEpoch = uint64(0)
    38  	endEpoch = uint64(3600_000 * 2)
    39  	interval = uint64(1)
    40  	expected = uint64(300_000)
    41  	actual, err = SanitizeHistogramInterval(startEpoch, endEpoch, interval)
    42  	assert.Nil(t, err)
    43  	assert.Equal(t, expected, actual, "expected  %v, actual %v", expected, actual)
    44  
    45  	// check for 10m interval
    46  	startEpoch = uint64(0)
    47  	endEpoch = uint64(3600_000 * 9)
    48  	interval = uint64(1)
    49  	expected = uint64(600_000)
    50  	actual, err = SanitizeHistogramInterval(startEpoch, endEpoch, interval)
    51  	assert.Nil(t, err)
    52  	assert.Equal(t, expected, actual, "expected  %v, actual %v", expected, actual)
    53  
    54  	// check for 30m interval
    55  	startEpoch = uint64(0)
    56  	endEpoch = uint64(3600_000 * 17)
    57  	interval = uint64(1)
    58  	expected = uint64(1800_000)
    59  	actual, err = SanitizeHistogramInterval(startEpoch, endEpoch, interval)
    60  	assert.Nil(t, err)
    61  	assert.Equal(t, expected, actual, "expected  %v, actual %v", expected, actual)
    62  
    63  	// check for 1h interval
    64  	startEpoch = uint64(0)
    65  	endEpoch = uint64(86400_000 * 2)
    66  	interval = uint64(1)
    67  	expected = uint64(3600_000)
    68  	actual, err = SanitizeHistogramInterval(startEpoch, endEpoch, interval)
    69  	assert.Nil(t, err)
    70  	assert.Equal(t, expected, actual, "expected  %v, actual %v", expected, actual)
    71  
    72  	// check for 1h interval
    73  	startEpoch = uint64(0)
    74  	endEpoch = uint64(86400_000 * 2)
    75  	interval = uint64(1)
    76  	expected = uint64(3600_000)
    77  	actual, err = SanitizeHistogramInterval(startEpoch, endEpoch, interval)
    78  	assert.Nil(t, err)
    79  	assert.Equal(t, expected, actual, "expected  %v, actual %v", expected, actual)
    80  
    81  	// check for 3h interval
    82  	startEpoch = uint64(0)
    83  	endEpoch = uint64(86400_000 * 8)
    84  	interval = uint64(1)
    85  	expected = uint64(10800_000)
    86  	actual, err = SanitizeHistogramInterval(startEpoch, endEpoch, interval)
    87  	assert.Nil(t, err)
    88  	assert.Equal(t, expected, actual, "expected  %v, actual %v", expected, actual)
    89  
    90  	// check for 12h interval
    91  	startEpoch = uint64(0)
    92  	endEpoch = uint64(86400_000 * 12)
    93  	interval = uint64(1)
    94  	expected = uint64(43200_000)
    95  	actual, err = SanitizeHistogramInterval(startEpoch, endEpoch, interval)
    96  	assert.Nil(t, err)
    97  	assert.Equal(t, expected, actual, "expected  %v, actual %v", expected, actual)
    98  
    99  	// check for 1d interval
   100  	startEpoch = uint64(0)
   101  	endEpoch = uint64(86400_000 * 50)
   102  	interval = uint64(1)
   103  	expected = uint64(86400_000)
   104  	actual, err = SanitizeHistogramInterval(startEpoch, endEpoch, interval)
   105  	assert.Nil(t, err)
   106  	assert.Equal(t, expected, actual, "expected  %v, actual %v", expected, actual)
   107  
   108  	// check for 7d interval
   109  	startEpoch = uint64(0)
   110  	endEpoch = uint64(86400_000 * 100)
   111  	interval = uint64(1)
   112  	expected = uint64(604800_000)
   113  	actual, err = SanitizeHistogramInterval(startEpoch, endEpoch, interval)
   114  	assert.Nil(t, err)
   115  	assert.Equal(t, expected, actual, "expected  %v, actual %v", expected, actual)
   116  
   117  	// check for 30d interval
   118  	startEpoch = uint64(0)
   119  	endEpoch = uint64(86400_000 * 365 * 2)
   120  	interval = uint64(1)
   121  	expected = uint64(2592000_000)
   122  	actual, err = SanitizeHistogramInterval(startEpoch, endEpoch, interval)
   123  	assert.Nil(t, err)
   124  	assert.Equal(t, expected, actual, "expected  %v, actual %v", expected, actual)
   125  
   126  	// check for 90d interval
   127  	startEpoch = uint64(0)
   128  	endEpoch = uint64(86400_000 * 365 * 12)
   129  	interval = uint64(1)
   130  	expected = uint64(7776000_000)
   131  	actual, err = SanitizeHistogramInterval(startEpoch, endEpoch, interval)
   132  	assert.Nil(t, err)
   133  	assert.Equal(t, expected, actual, "expected  %v, actual %v", expected, actual)
   134  
   135  	// check for 1y interval
   136  	startEpoch = uint64(0)
   137  	endEpoch = uint64(86400_000 * 365 * 50)
   138  	interval = uint64(1)
   139  	expected = uint64(31536000_000)
   140  	actual, err = SanitizeHistogramInterval(startEpoch, endEpoch, interval)
   141  	assert.Nil(t, err)
   142  	assert.Equal(t, expected, actual, "expected  %v, actual %v", expected, actual)
   143  
   144  	// check for 1y interval
   145  	startEpoch = uint64(0)
   146  	endEpoch = uint64(86400_000 * 365 * 50)
   147  	interval = uint64(1)
   148  	expected = uint64(31536000_000)
   149  	actual, err = SanitizeHistogramInterval(startEpoch, endEpoch, interval)
   150  	assert.Nil(t, err)
   151  	assert.Equal(t, expected, actual, "expected  %v, actual %v", expected, actual)
   152  
   153  	// check for 10y interval
   154  	startEpoch = uint64(0)
   155  	endEpoch = uint64(86400_000 * 365 * 100)
   156  	interval = uint64(1)
   157  	expected = uint64(315360000_000)
   158  	actual, err = SanitizeHistogramInterval(startEpoch, endEpoch, interval)
   159  	assert.Nil(t, err)
   160  	assert.Equal(t, expected, actual, "expected  %v, actual %v", expected, actual)
   161  
   162  }