This commit is contained in:
41666 2024-11-13 19:26:55 -08:00
parent 0fa1de3b4e
commit a755b4d2c8
6 changed files with 59 additions and 15 deletions

View file

@ -10,23 +10,25 @@ import (
"github.com/genudine/saerro-go/types"
)
func getEventHandlerTestShim(t *testing.T) (EventHandler, context.Context, *storemock.MockPlayerStore) {
func getEventHandlerTestShim(t *testing.T) (EventHandler, context.Context, *storemock.MockPlayerStore, *storemock.MockVehicleStore) {
t.Helper()
ctx, cancel := context.WithTimeout(context.Background(), time.Second*15)
t.Cleanup(cancel)
ps := new(storemock.MockPlayerStore)
vs := new(storemock.MockVehicleStore)
return EventHandler{
Ingest: &ingest.Ingest{
PlayerStore: ps,
VehicleStore: vs,
},
}, ctx, ps
}, ctx, ps, vs
}
func TestHandleDeath(t *testing.T) {
eh, ctx, ps := getEventHandlerTestShim(t)
eh, ctx, ps, _ := getEventHandlerTestShim(t)
event := types.ESSEvent{
EventName: "Death",
@ -52,7 +54,7 @@ func TestHandleDeath(t *testing.T) {
}
func TestHandleExperience(t *testing.T) {
eh, ctx, ps := getEventHandlerTestShim(t)
eh, ctx, ps, vs := getEventHandlerTestShim(t)
event := types.ESSEvent{
EventName: "GainExperience",
@ -66,14 +68,17 @@ func TestHandleExperience(t *testing.T) {
ExperienceID: 674,
}
p := types.PopEventFromESSEvent(event, false).ToPlayer()
ps.On("Insert", ctx, p).Return(nil)
p := types.PopEventFromESSEvent(event, false)
v := p.ToVehicle()
v.VehicleName = "ant" // exp event translation
ps.On("Insert", ctx, p.ToPlayer()).Return(nil)
vs.On("Insert", ctx, v).Return(nil)
eh.HandleExperience(ctx, event)
}
func TestHandleAnalytics(t *testing.T) {
eh, ctx, _ := getEventHandlerTestShim(t)
eh, ctx, _, _ := getEventHandlerTestShim(t)
event := types.ESSEvent{
EventName: "GainExperience",
WorldID: 17,
@ -90,7 +95,7 @@ func TestHandleAnalytics(t *testing.T) {
}
func TestHandleEvent(t *testing.T) {
eh, ctx, ps := getEventHandlerTestShim(t)
eh, ctx, ps, vs := getEventHandlerTestShim(t)
events := []types.ESSEvent{
{
@ -124,11 +129,18 @@ func TestHandleEvent(t *testing.T) {
p1 := types.PopEventFromESSEvent(events[0], false).ToPlayer()
ps.On("Insert", ctx, p1).Return(nil).Once()
p2 := types.PopEventFromESSEvent(events[0], true).ToPlayer()
ps.On("Insert", ctx, p2).Return(nil).Once()
p3 := types.PopEventFromESSEvent(events[1], false).ToPlayer()
e3 := types.PopEventFromESSEvent(events[1], false)
p3 := e3.ToPlayer()
ps.On("Insert", ctx, p3).Return(nil).Once()
v3 := types.PopEventFromESSEvent(events[1], false).ToVehicle()
v3.VehicleName = "galaxy" // exp event translation
vs.On("Insert", ctx, v3).Return(nil).Once()
for _, event := range events {
eh.HandleEvent(ctx, event)
}

View file

@ -39,6 +39,7 @@ func TestTrackPopHappyPath(t *testing.T) {
TeamID: types.TR,
LoadoutID: 4,
ClassName: translators.CombatMedic,
VehicleName: "unknown",
CharacterID: "aaaa",
}
@ -57,6 +58,7 @@ func TestTrackPopFixup(t *testing.T) {
ZoneID: 4,
TeamID: 0,
ClassName: "unknown",
VehicleName: "unknown",
CharacterID: "bbbb",
}
pastEventPlayer := event.ToPlayer()
@ -77,6 +79,7 @@ func TestTrackPopFixupFailed(t *testing.T) {
ZoneID: 4,
TeamID: 0,
ClassName: "unknown",
VehicleName: "unknown",
CharacterID: "bbbb",
}

View file

@ -1,6 +1,6 @@
services:
tsdb:
image: docker.io/timescale/timescaledb:latest-pg14
postgres:
image: docker.io/library/postgres
environment:
POSTGRES_PASSWORD: saerro321
POSTGRES_USER: saerrouser

View file

@ -10,6 +10,31 @@
systems = [ "x86_64-linux" "aarch64-linux" ];
perSystem = { config, self', pkgs, lib, system, ... }: {
devShells.default = import ./shell.nix { inherit pkgs; };
packages = let
vendorHash = "sha256-A5hZxo0zZ3w6qryV24PjYaKQatN2G2heyuee6QaU55M=";
in rec {
default = saerro;
saerro = pkgs.buildGoModule {
inherit vendorHash;
name = "saerro-ws";
src = ./.;
subPackages = [
"cmd/ws"
"cmd/pruner"
];
};
ws = pkgs.ociTools.buildContainer {
args = [
"${saerro}/ws"
];
};
pruner = pkgs.ociTools.buildContainer {
args = [
"${saerro}/pruner"
];
};
};
};
};
}

1
result Symbolic link
View file

@ -0,0 +1 @@
/nix/store/aa9byv99dpxncm4pf9baih91ni4x23cw-join

View file

@ -147,9 +147,12 @@ func (ps *VehicleStore) Prune(ctx context.Context) (int64, error) {
// Avoid using sql idioms here for portability
// SQLite and PgSQL do now() differently, we don't need to at all.
res, err := ps.DB.ExecContext(ctx, `
res, err := ps.DB.ExecContext(ctx,
`
DELETE FROM vehicles WHERE last_updated < $1;
`, time.Now().Add(-time.Minute*15))
`,
util.TimeToString(time.Now().Add(-time.Minute*15)),
)
if err != nil {
return 0, err
}