Skip to content

Commit

Permalink
Merge pull request #549 from aau-network-security/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
mrtrkmn authored Nov 15, 2020
2 parents 5d83f6c + ef198ec commit 7352243
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 22 deletions.
22 changes: 15 additions & 7 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ on:
- develop
- 'hotfix/**'
- 'feature/**'

jobs:

test:
Expand All @@ -38,15 +38,23 @@ jobs:
curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
dep ensure
fi
## Linting codebase will be added in future.
# - name: Lint
# run: |
# curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s v1.24.0
# ./bin/golangci-lint run -D errcheck
- name: Install Protoc
run: |
go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
sudo apt install -y protobuf-compiler
sudo apt install golang-goprotobuf-dev
echo 'export GOPATH=$HOME/go' >> $HOME/.bashrc
echo 'export PATH=$PATH:$GOPATH/bin' >> $HOME/.bashrc
source $HOME/.bashrc
- name: Compile Daemon Protoc
run : |
cd daemon && protoc -I proto/ proto/daemon.proto --go_out=plugins=grpc:proto
- name: Test
env:
GITHUB_CI: "GITHUB_CI"
# CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
run: |
go test -race -coverprofile=coverage.txt -covermode=atomic -v ./...
# bash <(curl -s https://codecov.io/bash)
47 changes: 32 additions & 15 deletions daemon/event.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"net/url"
"strconv"
"strings"
"sync"
"time"

pb "github.com/aau-network-security/haaukins/daemon/proto"
Expand Down Expand Up @@ -541,45 +542,61 @@ func (d *daemon) generateEventConfig(event *pbc.GetEventResponse_Events, status
return eventConfig
}

// CloseEvents will fetch Running events from DB
// compares finish time, closes events if required.
// CloseEvents closes overdue events
func (d *daemon) closeEvents() error {
var wg sync.WaitGroup
allEvents := d.eventPool.GetAllEvents()
ch := make(chan guacamole.Event, len(allEvents))
for _, ev := range allEvents {
go processEvent(ev, ch)
wg.Add(1)
go d.closeEvent(ch, &wg)
}
wg.Wait()
return nil
}

func (d *daemon) closeEvent(ch chan guacamole.Event, wg *sync.WaitGroup) error {
log.Info().Msgf("Running close events...")
ctx := context.Background()
events, err := d.dbClient.GetEvents(ctx, &pbc.GetEventRequest{Status: Running})
if err != nil {
log.Warn().Msgf("get events error on close overdue events %v ", err)
return err
}
var closeErr error
defer wg.Done()
closer := func(ev guacamole.Event) {
e := ev.GetConfig()
log.Info().Msgf("Running close events, checking %s", e.Tag)

for _, e := range events.Events {
eTag := store.Tag(e.Tag)

if isDelayed(e.ExpectedFinishTime) {
if isDelayed(e.FinishExpected.String()) {
currentTime := strconv.Itoa(int(time.Now().Unix()))
newEventTag := fmt.Sprintf("%s-%s", e.Tag, currentTime)
event, err := d.eventPool.GetEvent(eTag)
if err != nil {
log.Warn().Msgf("event pool get event error %v ", err)
return err
closeErr = err
}
_, err = d.dbClient.SetEventStatus(ctx, &pbc.SetEventStatusRequest{
EventTag: string(eTag),
Status: Closed})
if err != nil {
log.Warn().Msgf("Error in setting up status of event in database side event: %s", string(eTag))
return err
closeErr = err
}
log.Debug().Msgf("Status is set to %d for event: %s", Closed, string(eTag))
if err := d.eventPool.RemoveEvent(eTag); err != nil {
return err
closeErr = err
}
if err := event.Close(); err != nil {
return err
closeErr = err
}
event.Finish(newEventTag)
}
}
return nil

select {
case ev := <-ch:
closer(ev)
}
return closeErr
}

// StressEvent is making requests to daemon to see how daemon can handle them
Expand Down
2 changes: 2 additions & 0 deletions scripts/compile-proto.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#!/usr/bin/env bash
cd daemon && protoc -I proto/ proto/daemon.proto --go_out=plugins=grpc:proto

0 comments on commit 7352243

Please sign in to comment.