Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dev: upgrade time circuits and add a flux capacitor (engine cycle monitor and pgmocktime) #2438

Merged
merged 9 commits into from
Jun 14, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ goalert-client.key: system.ca.pem plugin.ca.key plugin.ca.pem
goalert-client.ca.pem: system.ca.pem plugin.ca.key plugin.ca.pem
go run ./cmd/goalert gen-cert client

cypress: bin/goalert bin/psql-lite node_modules web/src/schema.d.ts
cypress: bin/goalert bin/psql-lite bin/pgmocktime node_modules web/src/schema.d.ts
yarn cypress install

cy-wide: cypress
Expand Down
49 changes: 34 additions & 15 deletions Makefile.binaries.mk
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,25 @@ $(BIN_DIR)/windows-amd64/pgdump-lite.exe: $(GO_DEPS)
GOOS=windows GOARCH=amd64 go build -trimpath -o $@ ./devtools/pgdump-lite/cmd/pgdump-lite


$(BIN_DIR)/pgmocktime: $(GO_DEPS)
go build -o $@ ./devtools/pgmocktime/cmd/pgmocktime

$(BIN_DIR)/darwin-amd64/pgmocktime: $(GO_DEPS)
GOOS=darwin GOARCH=amd64 go build -trimpath -o $@ ./devtools/pgmocktime/cmd/pgmocktime

$(BIN_DIR)/linux-amd64/pgmocktime: $(GO_DEPS)
GOOS=linux GOARCH=amd64 go build -trimpath -o $@ ./devtools/pgmocktime/cmd/pgmocktime

$(BIN_DIR)/linux-arm/pgmocktime: $(GO_DEPS)
GOOS=linux GOARCH=arm GOARM=7 go build -trimpath -o $@ ./devtools/pgmocktime/cmd/pgmocktime

$(BIN_DIR)/linux-arm64/pgmocktime: $(GO_DEPS)
GOOS=linux GOARCH=arm64 go build -trimpath -o $@ ./devtools/pgmocktime/cmd/pgmocktime

$(BIN_DIR)/windows-amd64/pgmocktime.exe: $(GO_DEPS)
GOOS=windows GOARCH=amd64 go build -trimpath -o $@ ./devtools/pgmocktime/cmd/pgmocktime


$(BIN_DIR)/procwrap: $(GO_DEPS)
go build -o $@ ./devtools/procwrap

Expand Down Expand Up @@ -404,27 +423,27 @@ $(BIN_DIR)/windows-amd64/waitfor.exe: $(GO_DEPS)



$(BIN_DIR)/darwin-amd64/_all: $(BIN_DIR)/darwin-amd64/goalert-smoketest $(BIN_DIR)/darwin-amd64/goalert $(BIN_DIR)/darwin-amd64/goalert-slack-email-sync $(BIN_DIR)/darwin-amd64/mockslack $(BIN_DIR)/darwin-amd64/pgdump-lite $(BIN_DIR)/darwin-amd64/procwrap $(BIN_DIR)/darwin-amd64/psql-lite $(BIN_DIR)/darwin-amd64/resetdb $(BIN_DIR)/darwin-amd64/runproc $(BIN_DIR)/darwin-amd64/sendit $(BIN_DIR)/darwin-amd64/sendit-server $(BIN_DIR)/darwin-amd64/sendit-token $(BIN_DIR)/darwin-amd64/simpleproxy $(BIN_DIR)/darwin-amd64/slowproxy $(BIN_DIR)/darwin-amd64/waitfor
$(BIN_DIR)/darwin-amd64/_all: $(BIN_DIR)/darwin-amd64/goalert-smoketest $(BIN_DIR)/darwin-amd64/goalert $(BIN_DIR)/darwin-amd64/goalert-slack-email-sync $(BIN_DIR)/darwin-amd64/mockslack $(BIN_DIR)/darwin-amd64/pgdump-lite $(BIN_DIR)/darwin-amd64/pgmocktime $(BIN_DIR)/darwin-amd64/procwrap $(BIN_DIR)/darwin-amd64/psql-lite $(BIN_DIR)/darwin-amd64/resetdb $(BIN_DIR)/darwin-amd64/runproc $(BIN_DIR)/darwin-amd64/sendit $(BIN_DIR)/darwin-amd64/sendit-server $(BIN_DIR)/darwin-amd64/sendit-token $(BIN_DIR)/darwin-amd64/simpleproxy $(BIN_DIR)/darwin-amd64/slowproxy $(BIN_DIR)/darwin-amd64/waitfor

$(BIN_DIR)/darwin-amd64/goalert-smoketest: $(GO_DEPS)
GOOS=darwin GOARCH=amd64 go test ./smoketest -c -o $@

$(BIN_DIR)/linux-amd64/_all: $(BIN_DIR)/linux-amd64/goalert-smoketest $(BIN_DIR)/linux-amd64/goalert $(BIN_DIR)/linux-amd64/goalert-slack-email-sync $(BIN_DIR)/linux-amd64/mockslack $(BIN_DIR)/linux-amd64/pgdump-lite $(BIN_DIR)/linux-amd64/procwrap $(BIN_DIR)/linux-amd64/psql-lite $(BIN_DIR)/linux-amd64/resetdb $(BIN_DIR)/linux-amd64/runproc $(BIN_DIR)/linux-amd64/sendit $(BIN_DIR)/linux-amd64/sendit-server $(BIN_DIR)/linux-amd64/sendit-token $(BIN_DIR)/linux-amd64/simpleproxy $(BIN_DIR)/linux-amd64/slowproxy $(BIN_DIR)/linux-amd64/waitfor
$(BIN_DIR)/linux-amd64/_all: $(BIN_DIR)/linux-amd64/goalert-smoketest $(BIN_DIR)/linux-amd64/goalert $(BIN_DIR)/linux-amd64/goalert-slack-email-sync $(BIN_DIR)/linux-amd64/mockslack $(BIN_DIR)/linux-amd64/pgdump-lite $(BIN_DIR)/linux-amd64/pgmocktime $(BIN_DIR)/linux-amd64/procwrap $(BIN_DIR)/linux-amd64/psql-lite $(BIN_DIR)/linux-amd64/resetdb $(BIN_DIR)/linux-amd64/runproc $(BIN_DIR)/linux-amd64/sendit $(BIN_DIR)/linux-amd64/sendit-server $(BIN_DIR)/linux-amd64/sendit-token $(BIN_DIR)/linux-amd64/simpleproxy $(BIN_DIR)/linux-amd64/slowproxy $(BIN_DIR)/linux-amd64/waitfor

$(BIN_DIR)/linux-amd64/goalert-smoketest: $(GO_DEPS)
GOOS=linux GOARCH=amd64 go test ./smoketest -c -o $@

$(BIN_DIR)/linux-arm/_all: $(BIN_DIR)/linux-arm/goalert-smoketest $(BIN_DIR)/linux-arm/goalert $(BIN_DIR)/linux-arm/goalert-slack-email-sync $(BIN_DIR)/linux-arm/mockslack $(BIN_DIR)/linux-arm/pgdump-lite $(BIN_DIR)/linux-arm/procwrap $(BIN_DIR)/linux-arm/psql-lite $(BIN_DIR)/linux-arm/resetdb $(BIN_DIR)/linux-arm/runproc $(BIN_DIR)/linux-arm/sendit $(BIN_DIR)/linux-arm/sendit-server $(BIN_DIR)/linux-arm/sendit-token $(BIN_DIR)/linux-arm/simpleproxy $(BIN_DIR)/linux-arm/slowproxy $(BIN_DIR)/linux-arm/waitfor
$(BIN_DIR)/linux-arm/_all: $(BIN_DIR)/linux-arm/goalert-smoketest $(BIN_DIR)/linux-arm/goalert $(BIN_DIR)/linux-arm/goalert-slack-email-sync $(BIN_DIR)/linux-arm/mockslack $(BIN_DIR)/linux-arm/pgdump-lite $(BIN_DIR)/linux-arm/pgmocktime $(BIN_DIR)/linux-arm/procwrap $(BIN_DIR)/linux-arm/psql-lite $(BIN_DIR)/linux-arm/resetdb $(BIN_DIR)/linux-arm/runproc $(BIN_DIR)/linux-arm/sendit $(BIN_DIR)/linux-arm/sendit-server $(BIN_DIR)/linux-arm/sendit-token $(BIN_DIR)/linux-arm/simpleproxy $(BIN_DIR)/linux-arm/slowproxy $(BIN_DIR)/linux-arm/waitfor

$(BIN_DIR)/linux-arm/goalert-smoketest: $(GO_DEPS)
GOOS=linux GOARCH=arm GOARM=7 go test ./smoketest -c -o $@

$(BIN_DIR)/linux-arm64/_all: $(BIN_DIR)/linux-arm64/goalert-smoketest $(BIN_DIR)/linux-arm64/goalert $(BIN_DIR)/linux-arm64/goalert-slack-email-sync $(BIN_DIR)/linux-arm64/mockslack $(BIN_DIR)/linux-arm64/pgdump-lite $(BIN_DIR)/linux-arm64/procwrap $(BIN_DIR)/linux-arm64/psql-lite $(BIN_DIR)/linux-arm64/resetdb $(BIN_DIR)/linux-arm64/runproc $(BIN_DIR)/linux-arm64/sendit $(BIN_DIR)/linux-arm64/sendit-server $(BIN_DIR)/linux-arm64/sendit-token $(BIN_DIR)/linux-arm64/simpleproxy $(BIN_DIR)/linux-arm64/slowproxy $(BIN_DIR)/linux-arm64/waitfor
$(BIN_DIR)/linux-arm64/_all: $(BIN_DIR)/linux-arm64/goalert-smoketest $(BIN_DIR)/linux-arm64/goalert $(BIN_DIR)/linux-arm64/goalert-slack-email-sync $(BIN_DIR)/linux-arm64/mockslack $(BIN_DIR)/linux-arm64/pgdump-lite $(BIN_DIR)/linux-arm64/pgmocktime $(BIN_DIR)/linux-arm64/procwrap $(BIN_DIR)/linux-arm64/psql-lite $(BIN_DIR)/linux-arm64/resetdb $(BIN_DIR)/linux-arm64/runproc $(BIN_DIR)/linux-arm64/sendit $(BIN_DIR)/linux-arm64/sendit-server $(BIN_DIR)/linux-arm64/sendit-token $(BIN_DIR)/linux-arm64/simpleproxy $(BIN_DIR)/linux-arm64/slowproxy $(BIN_DIR)/linux-arm64/waitfor

$(BIN_DIR)/linux-arm64/goalert-smoketest: $(GO_DEPS)
GOOS=linux GOARCH=arm64 go test ./smoketest -c -o $@

$(BIN_DIR)/windows-amd64/_all: $(BIN_DIR)/windows-amd64/goalert-smoketest $(BIN_DIR)/windows-amd64/goalert.exe $(BIN_DIR)/windows-amd64/goalert-slack-email-sync.exe $(BIN_DIR)/windows-amd64/mockslack.exe $(BIN_DIR)/windows-amd64/pgdump-lite.exe $(BIN_DIR)/windows-amd64/procwrap.exe $(BIN_DIR)/windows-amd64/psql-lite.exe $(BIN_DIR)/windows-amd64/resetdb.exe $(BIN_DIR)/windows-amd64/runproc.exe $(BIN_DIR)/windows-amd64/sendit.exe $(BIN_DIR)/windows-amd64/sendit-server.exe $(BIN_DIR)/windows-amd64/sendit-token.exe $(BIN_DIR)/windows-amd64/simpleproxy.exe $(BIN_DIR)/windows-amd64/slowproxy.exe $(BIN_DIR)/windows-amd64/waitfor.exe
$(BIN_DIR)/windows-amd64/_all: $(BIN_DIR)/windows-amd64/goalert-smoketest $(BIN_DIR)/windows-amd64/goalert.exe $(BIN_DIR)/windows-amd64/goalert-slack-email-sync.exe $(BIN_DIR)/windows-amd64/mockslack.exe $(BIN_DIR)/windows-amd64/pgdump-lite.exe $(BIN_DIR)/windows-amd64/pgmocktime.exe $(BIN_DIR)/windows-amd64/procwrap.exe $(BIN_DIR)/windows-amd64/psql-lite.exe $(BIN_DIR)/windows-amd64/resetdb.exe $(BIN_DIR)/windows-amd64/runproc.exe $(BIN_DIR)/windows-amd64/sendit.exe $(BIN_DIR)/windows-amd64/sendit-server.exe $(BIN_DIR)/windows-amd64/sendit-token.exe $(BIN_DIR)/windows-amd64/simpleproxy.exe $(BIN_DIR)/windows-amd64/slowproxy.exe $(BIN_DIR)/windows-amd64/waitfor.exe

$(BIN_DIR)/windows-amd64/goalert-smoketest: $(GO_DEPS)
GOOS=windows GOARCH=amd64 go test ./smoketest -c -o $@
Expand Down Expand Up @@ -501,10 +520,10 @@ $(BIN_DIR)/goalert-windows-amd64.zip: $(BIN_DIR)/build/goalert-windows-amd64



$(BIN_DIR)/build/integration-darwin-amd64: $(BIN_DIR)/darwin-amd64/goalert $(BIN_DIR)/darwin-amd64/mockslack $(BIN_DIR)/darwin-amd64/pgdump-lite $(BIN_DIR)/darwin-amd64/psql-lite $(BIN_DIR)/darwin-amd64/procwrap $(BIN_DIR)/darwin-amd64/simpleproxy $(BIN_DIR)/darwin-amd64/waitfor $(BIN_DIR)/build/integration
$(BIN_DIR)/build/integration-darwin-amd64: $(BIN_DIR)/darwin-amd64/goalert $(BIN_DIR)/darwin-amd64/mockslack $(BIN_DIR)/darwin-amd64/pgdump-lite $(BIN_DIR)/darwin-amd64/psql-lite $(BIN_DIR)/darwin-amd64/procwrap $(BIN_DIR)/darwin-amd64/simpleproxy $(BIN_DIR)/darwin-amd64/waitfor $(BIN_DIR)/darwin-amd64/pgmocktime $(BIN_DIR)/build/integration
rm -rf $@
mkdir -p $@/goalert/bin/
cp $(BIN_DIR)/darwin-amd64/goalert $(BIN_DIR)/darwin-amd64/mockslack $(BIN_DIR)/darwin-amd64/pgdump-lite $(BIN_DIR)/darwin-amd64/psql-lite $(BIN_DIR)/darwin-amd64/procwrap $(BIN_DIR)/darwin-amd64/simpleproxy $(BIN_DIR)/darwin-amd64/waitfor $@/goalert/bin/
cp $(BIN_DIR)/darwin-amd64/goalert $(BIN_DIR)/darwin-amd64/mockslack $(BIN_DIR)/darwin-amd64/pgdump-lite $(BIN_DIR)/darwin-amd64/psql-lite $(BIN_DIR)/darwin-amd64/procwrap $(BIN_DIR)/darwin-amd64/simpleproxy $(BIN_DIR)/darwin-amd64/waitfor $(BIN_DIR)/darwin-amd64/pgmocktime $@/goalert/bin/
cp -r $(BIN_DIR)/build/integration/. $@/goalert/
touch $@

Expand All @@ -515,10 +534,10 @@ $(BIN_DIR)/integration-darwin-amd64.zip: $(BIN_DIR)/build/integration-darwin-amd
rm -f $@
cd $(BIN_DIR)/build/integration-darwin-amd64 && zip -r $(abspath $@) .

$(BIN_DIR)/build/integration-linux-amd64: $(BIN_DIR)/linux-amd64/goalert $(BIN_DIR)/linux-amd64/mockslack $(BIN_DIR)/linux-amd64/pgdump-lite $(BIN_DIR)/linux-amd64/psql-lite $(BIN_DIR)/linux-amd64/procwrap $(BIN_DIR)/linux-amd64/simpleproxy $(BIN_DIR)/linux-amd64/waitfor $(BIN_DIR)/build/integration
$(BIN_DIR)/build/integration-linux-amd64: $(BIN_DIR)/linux-amd64/goalert $(BIN_DIR)/linux-amd64/mockslack $(BIN_DIR)/linux-amd64/pgdump-lite $(BIN_DIR)/linux-amd64/psql-lite $(BIN_DIR)/linux-amd64/procwrap $(BIN_DIR)/linux-amd64/simpleproxy $(BIN_DIR)/linux-amd64/waitfor $(BIN_DIR)/linux-amd64/pgmocktime $(BIN_DIR)/build/integration
rm -rf $@
mkdir -p $@/goalert/bin/
cp $(BIN_DIR)/linux-amd64/goalert $(BIN_DIR)/linux-amd64/mockslack $(BIN_DIR)/linux-amd64/pgdump-lite $(BIN_DIR)/linux-amd64/psql-lite $(BIN_DIR)/linux-amd64/procwrap $(BIN_DIR)/linux-amd64/simpleproxy $(BIN_DIR)/linux-amd64/waitfor $@/goalert/bin/
cp $(BIN_DIR)/linux-amd64/goalert $(BIN_DIR)/linux-amd64/mockslack $(BIN_DIR)/linux-amd64/pgdump-lite $(BIN_DIR)/linux-amd64/psql-lite $(BIN_DIR)/linux-amd64/procwrap $(BIN_DIR)/linux-amd64/simpleproxy $(BIN_DIR)/linux-amd64/waitfor $(BIN_DIR)/linux-amd64/pgmocktime $@/goalert/bin/
cp -r $(BIN_DIR)/build/integration/. $@/goalert/
touch $@

Expand All @@ -529,10 +548,10 @@ $(BIN_DIR)/integration-linux-amd64.zip: $(BIN_DIR)/build/integration-linux-amd64
rm -f $@
cd $(BIN_DIR)/build/integration-linux-amd64 && zip -r $(abspath $@) .

$(BIN_DIR)/build/integration-linux-arm: $(BIN_DIR)/linux-arm/goalert $(BIN_DIR)/linux-arm/mockslack $(BIN_DIR)/linux-arm/pgdump-lite $(BIN_DIR)/linux-arm/psql-lite $(BIN_DIR)/linux-arm/procwrap $(BIN_DIR)/linux-arm/simpleproxy $(BIN_DIR)/linux-arm/waitfor $(BIN_DIR)/build/integration
$(BIN_DIR)/build/integration-linux-arm: $(BIN_DIR)/linux-arm/goalert $(BIN_DIR)/linux-arm/mockslack $(BIN_DIR)/linux-arm/pgdump-lite $(BIN_DIR)/linux-arm/psql-lite $(BIN_DIR)/linux-arm/procwrap $(BIN_DIR)/linux-arm/simpleproxy $(BIN_DIR)/linux-arm/waitfor $(BIN_DIR)/linux-arm/pgmocktime $(BIN_DIR)/build/integration
rm -rf $@
mkdir -p $@/goalert/bin/
cp $(BIN_DIR)/linux-arm/goalert $(BIN_DIR)/linux-arm/mockslack $(BIN_DIR)/linux-arm/pgdump-lite $(BIN_DIR)/linux-arm/psql-lite $(BIN_DIR)/linux-arm/procwrap $(BIN_DIR)/linux-arm/simpleproxy $(BIN_DIR)/linux-arm/waitfor $@/goalert/bin/
cp $(BIN_DIR)/linux-arm/goalert $(BIN_DIR)/linux-arm/mockslack $(BIN_DIR)/linux-arm/pgdump-lite $(BIN_DIR)/linux-arm/psql-lite $(BIN_DIR)/linux-arm/procwrap $(BIN_DIR)/linux-arm/simpleproxy $(BIN_DIR)/linux-arm/waitfor $(BIN_DIR)/linux-arm/pgmocktime $@/goalert/bin/
cp -r $(BIN_DIR)/build/integration/. $@/goalert/
touch $@

Expand All @@ -543,10 +562,10 @@ $(BIN_DIR)/integration-linux-arm.zip: $(BIN_DIR)/build/integration-linux-arm
rm -f $@
cd $(BIN_DIR)/build/integration-linux-arm && zip -r $(abspath $@) .

$(BIN_DIR)/build/integration-linux-arm64: $(BIN_DIR)/linux-arm64/goalert $(BIN_DIR)/linux-arm64/mockslack $(BIN_DIR)/linux-arm64/pgdump-lite $(BIN_DIR)/linux-arm64/psql-lite $(BIN_DIR)/linux-arm64/procwrap $(BIN_DIR)/linux-arm64/simpleproxy $(BIN_DIR)/linux-arm64/waitfor $(BIN_DIR)/build/integration
$(BIN_DIR)/build/integration-linux-arm64: $(BIN_DIR)/linux-arm64/goalert $(BIN_DIR)/linux-arm64/mockslack $(BIN_DIR)/linux-arm64/pgdump-lite $(BIN_DIR)/linux-arm64/psql-lite $(BIN_DIR)/linux-arm64/procwrap $(BIN_DIR)/linux-arm64/simpleproxy $(BIN_DIR)/linux-arm64/waitfor $(BIN_DIR)/linux-arm64/pgmocktime $(BIN_DIR)/build/integration
rm -rf $@
mkdir -p $@/goalert/bin/
cp $(BIN_DIR)/linux-arm64/goalert $(BIN_DIR)/linux-arm64/mockslack $(BIN_DIR)/linux-arm64/pgdump-lite $(BIN_DIR)/linux-arm64/psql-lite $(BIN_DIR)/linux-arm64/procwrap $(BIN_DIR)/linux-arm64/simpleproxy $(BIN_DIR)/linux-arm64/waitfor $@/goalert/bin/
cp $(BIN_DIR)/linux-arm64/goalert $(BIN_DIR)/linux-arm64/mockslack $(BIN_DIR)/linux-arm64/pgdump-lite $(BIN_DIR)/linux-arm64/psql-lite $(BIN_DIR)/linux-arm64/procwrap $(BIN_DIR)/linux-arm64/simpleproxy $(BIN_DIR)/linux-arm64/waitfor $(BIN_DIR)/linux-arm64/pgmocktime $@/goalert/bin/
cp -r $(BIN_DIR)/build/integration/. $@/goalert/
touch $@

Expand All @@ -557,10 +576,10 @@ $(BIN_DIR)/integration-linux-arm64.zip: $(BIN_DIR)/build/integration-linux-arm64
rm -f $@
cd $(BIN_DIR)/build/integration-linux-arm64 && zip -r $(abspath $@) .

$(BIN_DIR)/build/integration-windows-amd64: $(BIN_DIR)/windows-amd64/goalert.exe $(BIN_DIR)/windows-amd64/mockslack.exe $(BIN_DIR)/windows-amd64/pgdump-lite.exe $(BIN_DIR)/windows-amd64/psql-lite.exe $(BIN_DIR)/windows-amd64/procwrap.exe $(BIN_DIR)/windows-amd64/simpleproxy.exe $(BIN_DIR)/windows-amd64/waitfor.exe $(BIN_DIR)/build/integration
$(BIN_DIR)/build/integration-windows-amd64: $(BIN_DIR)/windows-amd64/goalert.exe $(BIN_DIR)/windows-amd64/mockslack.exe $(BIN_DIR)/windows-amd64/pgdump-lite.exe $(BIN_DIR)/windows-amd64/psql-lite.exe $(BIN_DIR)/windows-amd64/procwrap.exe $(BIN_DIR)/windows-amd64/simpleproxy.exe $(BIN_DIR)/windows-amd64/waitfor.exe $(BIN_DIR)/windows-amd64/pgmocktime.exe $(BIN_DIR)/build/integration
rm -rf $@
mkdir -p $@/goalert/bin/
cp $(BIN_DIR)/windows-amd64/goalert.exe $(BIN_DIR)/windows-amd64/mockslack.exe $(BIN_DIR)/windows-amd64/pgdump-lite.exe $(BIN_DIR)/windows-amd64/psql-lite.exe $(BIN_DIR)/windows-amd64/procwrap.exe $(BIN_DIR)/windows-amd64/simpleproxy.exe $(BIN_DIR)/windows-amd64/waitfor.exe $@/goalert/bin/
cp $(BIN_DIR)/windows-amd64/goalert.exe $(BIN_DIR)/windows-amd64/mockslack.exe $(BIN_DIR)/windows-amd64/pgdump-lite.exe $(BIN_DIR)/windows-amd64/psql-lite.exe $(BIN_DIR)/windows-amd64/procwrap.exe $(BIN_DIR)/windows-amd64/simpleproxy.exe $(BIN_DIR)/windows-amd64/waitfor.exe $(BIN_DIR)/windows-amd64/pgmocktime.exe $@/goalert/bin/
cp -r $(BIN_DIR)/build/integration/. $@/goalert/
touch $@

Expand Down
32 changes: 29 additions & 3 deletions app/healthcheck.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
package app

import (
"io"
"net/http"

"github.com/pkg/errors"
"github.com/google/uuid"
"github.com/target/goalert/app/lifecycle"
"github.com/target/goalert/util/errutil"
)
Expand Down Expand Up @@ -32,6 +33,31 @@ func (app *App) engineStatus(w http.ResponseWriter, req *http.Request) {
return
}

err := app.Engine.WaitNextCycle(req.Context())
errutil.HTTPError(req.Context(), w, errors.Wrap(err, "engine cycle"))
var id uuid.UUID
if nStr := req.FormValue("id"); nStr != "" {
_id, err := uuid.Parse(nStr)
if err != nil {
http.Error(w, "invalid id", http.StatusBadRequest)
return
}
id = _id
} else {
id = app.Engine.NextCycleID()
}

errutil.HTTPError(req.Context(), w, app.Engine.WaitCycleID(req.Context(), id))
}

func (app *App) engineCycle(w http.ResponseWriter, req *http.Request) {
if app.mgr.Status() == lifecycle.StatusShutdown {
http.Error(w, "server shutting down", http.StatusBadRequest)
return
}

if app.cfg.APIOnly {
http.Error(w, "engine not running", http.StatusBadRequest)
return
}

io.WriteString(w, app.Engine.NextCycleID().String())
}
1 change: 1 addition & 0 deletions app/inithttp.go
Original file line number Diff line number Diff line change
Expand Up @@ -246,6 +246,7 @@ func (app *App) initHTTP(ctx context.Context) error {

mux.HandleFunc("/health", app.healthCheck)
mux.HandleFunc("/health/engine", app.engineStatus)
mux.HandleFunc("/health/engine/cycle", app.engineCycle)

webH, err := web.NewHandler(app.cfg.UIDir, app.cfg.HTTPPrefix)
if err != nil {
Expand Down
1 change: 1 addition & 0 deletions devtools/genmake/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ func main() {
"procwrap",
"simpleproxy",
"waitfor",
"pgmocktime",
},
},
}
Expand Down
85 changes: 85 additions & 0 deletions devtools/pgmocktime/cmd/pgmocktime/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
package main

import (
"context"
"flag"
"log"
"os"
"time"

"github.com/target/goalert/devtools/pgmocktime"
)

func main() {
log.SetFlags(log.Lshortfile)
url := flag.String("d", os.Getenv("DBURL"), "DB URL") // use same env var as pg_dump
speed := flag.Float64("s", 1.0, "Speed of time (1.0 = real time).")
setTime := flag.String("t", "", "Set time to the provided value.")
advTime := flag.Duration("a", 0, "Advance time by this offset.")
reset := flag.Bool("reset", false, "Reset time and speed.")
inject := flag.Bool("inject", false, "Inject instrumentation.")
remove := flag.Bool("remove", false, "Remove instrumentation.")
flag.Parse()

ctx := context.Background()

m, err := pgmocktime.New(ctx, *url)
if err != nil {
log.Fatal(err)
}
defer m.Close()

if *inject {
err = m.Inject(ctx)
if err != nil {
log.Fatal(err)
}
}

if *reset {
err = m.Reset(ctx)
if err != nil {
log.Fatal(err)
}
}

var setSpeed bool
flag.Visit(func(f *flag.Flag) {
if f.Name == "s" {
setSpeed = true
}
})

if setSpeed {
err = m.SetSpeed(ctx, *speed)
if err != nil {
log.Fatal(err)
}
}

if *setTime != "" {
t, err := time.Parse(time.RFC3339Nano, *setTime)
if err != nil {
log.Fatal(err)
}

err = m.SetTime(ctx, t)
if err != nil {
log.Fatal(err)
}
}

if *advTime != 0 {
err = m.AdvanceTime(ctx, *advTime)
if err != nil {
log.Fatal(err)
}
}

if *remove {
err = m.Remove(ctx)
if err != nil {
log.Fatal(err)
}
}
}
Loading