sync
This commit is contained in:
parent
0fa1de3b4e
commit
a755b4d2c8
6 changed files with 59 additions and 15 deletions
|
@ -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,
|
||||
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)
|
||||
}
|
||||
|
|
|
@ -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",
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
25
flake.nix
25
flake.nix
|
@ -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
1
result
Symbolic link
|
@ -0,0 +1 @@
|
|||
/nix/store/aa9byv99dpxncm4pf9baih91ni4x23cw-join
|
|
@ -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, `
|
||||
DELETE FROM vehicles WHERE last_updated < $1;
|
||||
`, time.Now().Add(-time.Minute*15))
|
||||
res, err := ps.DB.ExecContext(ctx,
|
||||
`
|
||||
DELETE FROM vehicles WHERE last_updated < $1;
|
||||
`,
|
||||
util.TimeToString(time.Now().Add(-time.Minute*15)),
|
||||
)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue