mirror of
https://github.com/openziti/zrok.git
synced 2024-11-25 17:43:53 +01:00
new limit journal test and necessary tweaks (#606)
This commit is contained in:
parent
d2d3adc5cc
commit
b3f10dadec
63
controller/store/bandwidthLimitJournal_test.go
Normal file
63
controller/store/bandwidthLimitJournal_test.go
Normal file
@ -0,0 +1,63 @@
|
||||
package store
|
||||
|
||||
import (
|
||||
"github.com/openziti/zrok/sdk/golang/sdk"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestBandwidthLimitJournal(t *testing.T) {
|
||||
str, err := Open(&Config{Path: ":memory:", Type: "sqlite3"})
|
||||
assert.NoError(t, err)
|
||||
assert.NotNil(t, str)
|
||||
|
||||
trx, err := str.Begin()
|
||||
assert.NoError(t, err)
|
||||
assert.NotNil(t, trx)
|
||||
|
||||
jEmpty, err := str.IsBandwidthLimitJournalEmpty(1, trx)
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, jEmpty)
|
||||
|
||||
acctId, err := str.CreateAccount(&Account{Email: "nobody@nowhere.com", Salt: "salt", Password: "password", Token: "token"}, trx)
|
||||
assert.NoError(t, err)
|
||||
|
||||
_, err = str.CreateBandwidthLimitJournalEntry(&BandwidthLimitJournalEntry{AccountId: acctId, Action: WarningLimitAction, RxBytes: 1024, TxBytes: 2048}, trx)
|
||||
assert.NoError(t, err)
|
||||
|
||||
jEmpty, err = str.IsBandwidthLimitJournalEmpty(acctId, trx)
|
||||
assert.NoError(t, err)
|
||||
assert.False(t, jEmpty)
|
||||
|
||||
latestJe, err := str.FindLatestBandwidthLimitJournal(acctId, trx)
|
||||
assert.NoError(t, err)
|
||||
assert.NotNil(t, latestJe)
|
||||
assert.Nil(t, latestJe.LimitClassId)
|
||||
assert.Equal(t, WarningLimitAction, latestJe.Action)
|
||||
assert.Equal(t, int64(1024), latestJe.RxBytes)
|
||||
assert.Equal(t, int64(2048), latestJe.TxBytes)
|
||||
|
||||
lcId, err := str.CreateLimitClass(&LimitClass{
|
||||
LimitScope: AccountLimitScope,
|
||||
LimitAction: LimitLimitAction,
|
||||
ShareMode: sdk.PrivateShareMode,
|
||||
BackendMode: sdk.VpnBackendMode,
|
||||
PeriodMinutes: 60,
|
||||
RxBytes: 4096,
|
||||
TxBytes: 8192,
|
||||
TotalBytes: 10240,
|
||||
}, trx)
|
||||
assert.NoError(t, err)
|
||||
|
||||
_, err = str.CreateBandwidthLimitJournalEntry(&BandwidthLimitJournalEntry{AccountId: acctId, LimitClassId: &lcId, Action: LimitLimitAction, RxBytes: 10240, TxBytes: 20480}, trx)
|
||||
assert.NoError(t, err)
|
||||
|
||||
latestJe, err = str.FindLatestBandwidthLimitJournal(acctId, trx)
|
||||
assert.NoError(t, err)
|
||||
assert.NotNil(t, latestJe)
|
||||
assert.NotNil(t, latestJe.LimitClassId)
|
||||
assert.Equal(t, lcId, *latestJe.LimitClassId)
|
||||
assert.Equal(t, LimitLimitAction, latestJe.Action)
|
||||
assert.Equal(t, int64(10240), latestJe.RxBytes)
|
||||
assert.Equal(t, int64(20480), latestJe.TxBytes)
|
||||
}
|
@ -37,7 +37,7 @@ func (str *Store) CreateLimitClass(lc *LimitClass, trx *sqlx.Tx) (int, error) {
|
||||
return 0, errors.Wrap(err, "error preparing limit_classes insert statement")
|
||||
}
|
||||
var id int
|
||||
if err := stmt.QueryRow(lc.LimitScope, lc.LimitAction, lc.ShareMode, lc.BackendMode, lc.PeriodMinutes).Scan(&id); err != nil {
|
||||
if err := stmt.QueryRow(lc.LimitScope, lc.LimitAction, lc.ShareMode, lc.BackendMode, lc.PeriodMinutes, lc.RxBytes, lc.TxBytes, lc.TotalBytes).Scan(&id); err != nil {
|
||||
return 0, errors.Wrap(err, "error executing limit_classes insert statement")
|
||||
}
|
||||
return id, nil
|
||||
|
@ -1,7 +1,7 @@
|
||||
-- +migrate Up
|
||||
|
||||
create table limit_classes (
|
||||
id serial primary key,
|
||||
id integer primary key,
|
||||
|
||||
limit_scope string not null default ('account'),
|
||||
limit_action string not null default ('limit'),
|
||||
@ -23,7 +23,7 @@ create table limit_classes (
|
||||
);
|
||||
|
||||
create table applied_limit_classes (
|
||||
id serial primary key,
|
||||
id integer primary key,
|
||||
account_id integer not null references accounts (id),
|
||||
limit_class_id integer not null references limit_classes (id),
|
||||
created_at datetime not null default(strftime('%Y-%m-%d %H:%M:%f', 'now')),
|
||||
|
@ -5,14 +5,14 @@ drop table environment_limit_journal;
|
||||
drop table share_limit_journal;
|
||||
|
||||
create table bandwidth_limit_journal (
|
||||
id serial primary key,
|
||||
id integer primary key,
|
||||
account_id integer references accounts (id) not null,
|
||||
limit_class integer references limit_classes,
|
||||
limit_class_id integer references limit_classes,
|
||||
action string not null,
|
||||
rx_bytes bigint not null,
|
||||
tx_bytes bigint not null,
|
||||
created_at timestamptz not null default(strftime('%Y-%m-%d %H:%M:%f', 'now')),
|
||||
updated_at timestamptz not null default(strftime('%Y-%m-%d %H:%M:%f', 'now'))
|
||||
created_at datetime not null default(strftime('%Y-%m-%d %H:%M:%f', 'now')),
|
||||
updated_at datetime not null default(strftime('%Y-%m-%d %H:%M:%f', 'now'))
|
||||
);
|
||||
|
||||
create index bandwidth_limit_journal_account_id_idx on bandwidth_limit_journal (account_id);
|
Loading…
Reference in New Issue
Block a user