Merge pull request #64 from safing/fix/post-factum-reviews-1

Implement Post Factum Review Suggestions
This commit is contained in:
Patrick Pacher 2020-07-12 08:46:13 +02:00 committed by GitHub
commit fc31a72d7d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 13 additions and 8 deletions

View file

@ -38,7 +38,7 @@ type Authenticator func(ctx context.Context, s *http.Server, r *http.Request) (e
// SetAuthenticator sets an authenticator function for the API endpoint. If none is set, all requests will be permitted.
func SetAuthenticator(fn Authenticator) error {
if module.Online() {
return ErrAuthenticationAlreadySet
return ErrAuthenticationImmutable
}
authFnLock.Lock()
@ -114,6 +114,7 @@ func authMiddleware(next http.Handler) http.Handler {
http.SetCookie(w, &http.Cookie{
Name: cookieName,
Value: tokenString,
Path: "/",
HttpOnly: true,
SameSite: http.SameSiteStrictMode,
MaxAge: int(cookieTTL.Seconds()),

View file

@ -14,7 +14,8 @@ var (
// API Errors
var (
ErrAuthenticationAlreadySet = errors.New("the authentication function has already been set (or must be set earlier)")
ErrAuthenticationAlreadySet = errors.New("the authentication function has already been set")
ErrAuthenticationImmutable = errors.New("the authentication function can only be set before the api has started")
)
func init() {

View file

@ -74,9 +74,9 @@ signalLoop:
fmt.Println(" <INTERRUPT>")
log.Warning("main: program was interrupted, shutting down.")
forceCnt := 5
// catch signals during shutdown
go func() {
forceCnt := 5
for {
<-signalCh
forceCnt--

View file

@ -104,8 +104,8 @@ func (p *StablePool) Get() interface{} {
return nil
}
// Cnt returns the amount of items the pool currently holds.
func (p *StablePool) Cnt() int {
// Size returns the amount of items the pool currently holds.
func (p *StablePool) Size() int {
p.lock.Lock()
defer p.lock.Unlock()

View file

@ -9,8 +9,7 @@ import (
"github.com/stretchr/testify/assert"
)
func TestStablePool(t *testing.T) {
func TestStablePoolRealWorld(t *testing.T) {
// "real world" simulation
cnt := 0
@ -55,7 +54,7 @@ func TestStablePool(t *testing.T) {
// wait for round to finish
testWorkerWg.Wait()
}
t.Logf("real world simulation: cnt=%d p.cnt=%d p.max=%d\n", cnt, testPool.Cnt(), testPool.Max())
t.Logf("real world simulation: cnt=%d p.cnt=%d p.max=%d\n", cnt, testPool.Size(), testPool.Max())
assert.GreaterOrEqual(t, 200, cnt, "should not use more than 200 values")
assert.GreaterOrEqual(t, 100, testPool.Max(), "pool should have at most this max size")
@ -71,7 +70,9 @@ func TestStablePool(t *testing.T) {
}
}
assert.Equal(t, 100, optPool.Max(), "pool should have exactly this max size")
}
func TestStablePoolFuzzing(t *testing.T) {
// fuzzing test
fuzzPool := &StablePool{}
@ -97,7 +98,9 @@ func TestStablePool(t *testing.T) {
fuzzWg.Done()
// wait for all to finish
fuzzWorkerWg.Wait()
}
func TestStablePoolBreaking(t *testing.T) {
// try to break it
breakPool := &StablePool{}