Skip to content

Commit

Permalink
Release 8.0.0
Browse files Browse the repository at this point in the history
  • Loading branch information
al1img authored Sep 10, 2024
2 parents e8bb31b + d16e0c1 commit 8f7bd20
Show file tree
Hide file tree
Showing 94 changed files with 22,775 additions and 16,718 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,6 @@ jobs:
run: bash <(curl -s https://codecov.io/bash)

- name: Lint
uses: golangci/golangci-lint-action@v3
uses: golangci/golangci-lint-action@v6
with:
version: "v1.55"
version: "v1.59"
28 changes: 10 additions & 18 deletions .golangci.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
run:
go: "1.21"

linters:
enable-all: true
disable:
- cyclop
- exhaustive
- exhaustivestruct
- exhaustruct
- depguard
- gci
Expand All @@ -13,26 +15,17 @@ linters:
- nestif
- nlreturn
- nonamedreturns
- nosnakecase
- unparam
- varnamelen
# deprecated
- bodyclose
- contextcheck
- deadcode
- golint
- ifshort
- interfacer
- maligned
- nilerr
- noctx
- rowserrcheck
- scopelint
- sqlclosecheck
- structcheck
- tparallel
- unparam
- varcheck
- wastedassign

linters-settings:
Expand All @@ -44,19 +37,18 @@ linters-settings:

funlen:
lines: 100
statements: 50

gocognit:
min-complexity: 40

gosec:
excludes:
- G204

gomnd:
settings:
mnd:
ignored-numbers: 0o600,0o755,0o644,5,10,16,32,64,128,100,0xff,3
ignored-files: config/config.go,fcrypt/utils.go

gofumpt:
lang-version: "1.21"
mnd:
ignored-numbers: 0o600,0o755,0o644,0.5,3,5,10,16,32,64,128,100,100.0,0xff
ignored-files: config/config.go,fcrypt/utils.go

interfacebloat:
max: 12
Expand Down
18 changes: 9 additions & 9 deletions alerts/alerts.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,14 @@ package alerts
import (
"context"
"encoding/json"
"reflect"
"sync"
"time"

"github.com/aosedge/aos_common/aoserrors"
"github.com/aosedge/aos_common/api/cloudprotocol"
log "github.com/sirupsen/logrus"

"github.com/aosedge/aos_common/utils/alertutils"
"github.com/aosedge/aos_communicationmanager/amqphandler"
"github.com/aosedge/aos_communicationmanager/config"
)
Expand Down Expand Up @@ -56,7 +56,7 @@ type Sender interface {
// Alerts instance.
type Alerts struct {
sync.RWMutex
alertsChannel chan cloudprotocol.AlertItem
alertsChannel chan interface{}
alertsPackageChannel chan cloudprotocol.Alerts
currentAlerts cloudprotocol.Alerts
senderCancelFunction context.CancelFunc
Expand All @@ -79,7 +79,7 @@ func New(config config.Alerts, sender Sender) (instance *Alerts, err error) {
instance = &Alerts{
config: config,
sender: sender,
alertsChannel: make(chan cloudprotocol.AlertItem, alertChannelSize),
alertsChannel: make(chan interface{}, alertChannelSize),
alertsPackageChannel: make(chan cloudprotocol.Alerts, config.MaxOfflineMessages),
}

Expand Down Expand Up @@ -110,7 +110,7 @@ func (instance *Alerts) Close() {
}

// SendAlert sends alert.
func (instance *Alerts) SendAlert(alert cloudprotocol.AlertItem) {
func (instance *Alerts) SendAlert(alert interface{}) {
select {
case instance.alertsChannel <- alert:

Expand Down Expand Up @@ -190,12 +190,12 @@ func (instance *Alerts) processAlertChannels(ctx context.Context) {
}
}

func (instance *Alerts) addAlert(item cloudprotocol.AlertItem) (bufferIsFull bool) {
func (instance *Alerts) addAlert(item interface{}) (bufferIsFull bool) {
instance.Lock()
defer instance.Unlock()

if len(instance.currentAlerts) != 0 &&
reflect.DeepEqual(instance.currentAlerts[len(instance.currentAlerts)-1].Payload, item.Payload) {
if len(instance.currentAlerts.Items) != 0 &&
alertutils.AlertsPayloadEqual(instance.currentAlerts.Items[len(instance.currentAlerts.Items)-1], item) {
instance.duplicatedAlerts++
return
}
Expand All @@ -206,7 +206,7 @@ func (instance *Alerts) addAlert(item cloudprotocol.AlertItem) (bufferIsFull boo
}

instance.alertsSize += len(data)
instance.currentAlerts = append(instance.currentAlerts, item)
instance.currentAlerts.Items = append(instance.currentAlerts.Items, item)

return instance.alertsSize >= instance.config.MaxMessageSize
}
Expand All @@ -233,7 +233,7 @@ func (instance *Alerts) prepareAlertsPackage() {
log.Warn("Skip sending alerts due to channel is full")
}

instance.currentAlerts = []cloudprotocol.AlertItem{}
instance.currentAlerts.Items = make([]interface{}, 0)
instance.skippedAlerts = 0
instance.duplicatedAlerts = 0
instance.alertsSize = 0
Expand Down
45 changes: 20 additions & 25 deletions alerts/alerts_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,23 +89,21 @@ func TestAlertsMaxMessageSize(t *testing.T) {

for i := 0; i < 2; i++ {
// alert size = header 96 + message length
alertItem := cloudprotocol.AlertItem{
Timestamp: time.Now(),
Tag: cloudprotocol.AlertTagSystemError,
Payload: cloudprotocol.SystemAlert{Message: randomString(200)},
alertItem := cloudprotocol.SystemAlert{
AlertItem: cloudprotocol.AlertItem{Timestamp: time.Now(), Tag: cloudprotocol.AlertTagSystemError},
Message: randomString(200),
}

alertsHandler.SendAlert(alertItem)

expectedAlerts = append(expectedAlerts, alertItem)
expectedAlerts.Items = append(expectedAlerts.Items, alertItem)
}

for i := 2; i < numMessages; i++ {
// alert size = header 96 + message length
alertItem := cloudprotocol.AlertItem{
Timestamp: time.Now(),
Tag: cloudprotocol.AlertTagSystemError,
Payload: cloudprotocol.SystemAlert{Message: randomString(200)},
alertItem := cloudprotocol.SystemAlert{
AlertItem: cloudprotocol.AlertItem{Timestamp: time.Now(), Tag: cloudprotocol.AlertTagSystemError},
Message: randomString(200),
}

alertsHandler.SendAlert(alertItem)
Expand Down Expand Up @@ -139,13 +137,12 @@ func TestAlertsDuplicationMessages(t *testing.T) {

expectedAlerts := cloudprotocol.Alerts{}

alertItem := cloudprotocol.AlertItem{
Timestamp: time.Now(),
Tag: cloudprotocol.AlertTagSystemError,
Payload: cloudprotocol.SystemAlert{Message: randomString(32)},
alertItem := cloudprotocol.SystemAlert{
AlertItem: cloudprotocol.AlertItem{Timestamp: time.Now(), Tag: cloudprotocol.AlertTagSystemError},
Message: randomString(32),
}

expectedAlerts = append(expectedAlerts, alertItem)
expectedAlerts.Items = append(expectedAlerts.Items, alertItem)

for i := 0; i < 2; i++ {
alertsHandler.SendAlert(alertItem)
Expand Down Expand Up @@ -183,22 +180,20 @@ func TestAlertsOfflineMessages(t *testing.T) {
expectedAlerts := cloudprotocol.Alerts{}

for i := 0; i < numOfflineMessages; i++ {
alertItem := cloudprotocol.AlertItem{
Timestamp: time.Now(),
Tag: cloudprotocol.AlertTagSystemError,
Payload: cloudprotocol.SystemAlert{Message: randomString(200)},
alertItem := cloudprotocol.SystemAlert{
AlertItem: cloudprotocol.AlertItem{Timestamp: time.Now(), Tag: cloudprotocol.AlertTagSystemError},
Message: randomString(200),
}

expectedAlerts = append(expectedAlerts, alertItem)
expectedAlerts.Items = append(expectedAlerts.Items, alertItem)

alertsHandler.SendAlert(alertItem)
}

for i := 0; i < numExtraMessages; i++ {
alertItem := cloudprotocol.AlertItem{
Timestamp: time.Now(),
Tag: cloudprotocol.AlertTagAosCore,
Payload: cloudprotocol.SystemAlert{Message: randomString(200)},
alertItem := cloudprotocol.SystemAlert{
AlertItem: cloudprotocol.AlertItem{Timestamp: time.Now(), Tag: cloudprotocol.AlertTagAosCore},
Message: randomString(200),
}

alertsHandler.SendAlert(alertItem)
Expand All @@ -220,7 +215,7 @@ func TestAlertsOfflineMessages(t *testing.T) {
t.Fatalf("Wait alerts error: %v", err)
}

receivedAlerts = append(receivedAlerts, alerts...)
receivedAlerts.Items = append(receivedAlerts.Items, alerts.Items...)
}

if !reflect.DeepEqual(receivedAlerts, expectedAlerts) {
Expand Down Expand Up @@ -267,7 +262,7 @@ func (sender *testSender) waitResult(timeout time.Duration) (cloudprotocol.Alert
return alerts, nil

case <-time.After(timeout):
return nil, errTimeout
return cloudprotocol.Alerts{}, errTimeout
}
}
}
Expand Down
Loading

0 comments on commit 8f7bd20

Please sign in to comment.