github.com/keybase/client/go@v0.0.0-20241007131713-f10651d043c8/kbfs/libpages/stats_test.go (about)

     1  package libpages
     2  
     3  import (
     4  	"os"
     5  	"testing"
     6  	"time"
     7  
     8  	"github.com/stretchr/testify/require"
     9  )
    10  
    11  type fileInfoForActivesGetterTest time.Time
    12  
    13  func (f fileInfoForActivesGetterTest) Name() string       { return "" }
    14  func (f fileInfoForActivesGetterTest) Size() int64        { return 0 }
    15  func (f fileInfoForActivesGetterTest) Mode() os.FileMode  { return 0 }
    16  func (f fileInfoForActivesGetterTest) ModTime() time.Time { return time.Time(f) }
    17  func (f fileInfoForActivesGetterTest) IsDir() bool        { return false }
    18  func (f fileInfoForActivesGetterTest) Sys() interface{}   { return nil }
    19  
    20  func makeFileInfoActivesGetterForTest(
    21  	tlfModTimes, hostModTimes []time.Time) fileinfoActivesGetter {
    22  	tlfs := make([]os.FileInfo, 0, len(tlfModTimes))
    23  	hosts := make([]os.FileInfo, 0, len(hostModTimes))
    24  	for _, m := range tlfModTimes {
    25  		tlfs = append(tlfs, fileInfoForActivesGetterTest(m))
    26  	}
    27  	for _, m := range hostModTimes {
    28  		hosts = append(hosts, fileInfoForActivesGetterTest(m))
    29  	}
    30  	return fileinfoActivesGetter{
    31  		tlfs:  tlfs,
    32  		hosts: hosts,
    33  	}
    34  }
    35  
    36  func TestGetActives(t *testing.T) {
    37  	now := time.Now()
    38  	getter := makeFileInfoActivesGetterForTest(
    39  		[]time.Time{
    40  			now.Add(-(time.Minute)),
    41  			now.Add(-(time.Minute * 12)),
    42  			now.Add(-(time.Hour + time.Minute)),
    43  			now.Add(-(time.Hour*24 + time.Minute)),
    44  			now.Add(-(time.Hour*24*7 + time.Minute)),
    45  		}, // tlfs
    46  		[]time.Time{
    47  			now.Add(-(time.Minute)),
    48  			now.Add(-(time.Minute * 12)),
    49  			now.Add(-(time.Hour + time.Minute)),
    50  			now.Add(-(time.Hour*24 + time.Minute)),
    51  			now.Add(-(time.Hour*24*7 + time.Minute)),
    52  		}, // hosts
    53  	)
    54  	tlfs, hosts, err := getter.GetActives(2 * time.Minute)
    55  	require.NoError(t, err)
    56  	require.Equal(t, 1, tlfs)
    57  	require.Equal(t, 1, hosts)
    58  
    59  	tlfs, hosts, err = getter.GetActives(time.Hour)
    60  	require.NoError(t, err)
    61  	require.Equal(t, 2, tlfs)
    62  	require.Equal(t, 2, hosts)
    63  
    64  	tlfs, hosts, err = getter.GetActives(time.Hour * 24)
    65  	require.NoError(t, err)
    66  	require.Equal(t, 3, tlfs)
    67  	require.Equal(t, 3, hosts)
    68  
    69  	tlfs, hosts, err = getter.GetActives(time.Hour * 24 * 7)
    70  	require.NoError(t, err)
    71  	require.Equal(t, 4, tlfs)
    72  	require.Equal(t, 4, hosts)
    73  
    74  	tlfs, hosts, err = getter.GetActives(time.Hour * 24 * 30)
    75  	require.NoError(t, err)
    76  	require.Equal(t, 5, tlfs)
    77  	require.Equal(t, 5, hosts)
    78  }