From 2c7fc2a6f265c3ebb97036bf76fc300f9d3d25d0 Mon Sep 17 00:00:00 2001 From: Zachary Wasserman Date: Thu, 22 Dec 2016 13:32:40 -0800 Subject: [PATCH] Minor refactoring in HostStatus function (#692) - Refactor function - Add test --- server/service/service_hosts.go | 12 ++++++------ server/service/service_hosts_test.go | 26 ++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/server/service/service_hosts.go b/server/service/service_hosts.go index 798d231e85..d8689c464e 100644 --- a/server/service/service_hosts.go +++ b/server/service/service_hosts.go @@ -14,14 +14,14 @@ func (svc service) GetHost(ctx context.Context, id uint) (*kolide.Host, error) { } func (svc service) HostStatus(ctx context.Context, host kolide.Host) string { - if host.UpdatedAt.Add(OfflineDuration).Before(svc.clock.Now()) { - if host.UpdatedAt.Add(MIADuration).Before(svc.clock.Now()) { - return StatusMIA - } + switch { + case host.UpdatedAt.Add(MIADuration).Before(svc.clock.Now()): + return StatusMIA + case host.UpdatedAt.Add(OfflineDuration).Before(svc.clock.Now()): return StatusOffline + default: + return StatusOnline } - - return StatusOnline } func (svc service) DeleteHost(ctx context.Context, id uint) error { diff --git a/server/service/service_hosts_test.go b/server/service/service_hosts_test.go index 960d850540..e84a8266d3 100644 --- a/server/service/service_hosts_test.go +++ b/server/service/service_hosts_test.go @@ -2,11 +2,14 @@ package service import ( "testing" + "time" + "github.com/WatchBeam/clock" "github.com/kolide/kolide-ose/server/config" "github.com/kolide/kolide-ose/server/datastore/inmem" "github.com/kolide/kolide-ose/server/kolide" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "golang.org/x/net/context" ) @@ -77,3 +80,26 @@ func TestDeleteHost(t *testing.T) { assert.Len(t, hosts, 0) } + +func TestHostStatus(t *testing.T) { + mockClock := clock.NewMockClock() + svc, err := newTestServiceWithClock(nil, nil, mockClock) + require.Nil(t, err) + + assert.Nil(t, err) + ctx := context.Background() + + host := kolide.Host{} + + host.UpdatedAt = mockClock.Now() + assert.Equal(t, StatusOnline, svc.HostStatus(ctx, host)) + + host.UpdatedAt = mockClock.Now().Add(-1 * time.Minute) + assert.Equal(t, StatusOnline, svc.HostStatus(ctx, host)) + + host.UpdatedAt = mockClock.Now().Add(-1 * time.Hour) + assert.Equal(t, StatusOffline, svc.HostStatus(ctx, host)) + + host.UpdatedAt = mockClock.Now().Add(-24 * 35 * time.Hour) // 35 days + assert.Equal(t, StatusMIA, svc.HostStatus(ctx, host)) +}