github.com/juju/juju@v0.0.0-20240327075706-a90865de2538/core/quota/multichecker_test.go (about) 1 // Copyright 2020 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package quota_test 5 6 import ( 7 "github.com/juju/errors" 8 jc "github.com/juju/testing/checkers" 9 gc "gopkg.in/check.v1" 10 11 "github.com/juju/juju/core/quota" 12 ) 13 14 var _ = gc.Suite(&MultiCheckerSuite{}) 15 16 type MultiCheckerSuite struct { 17 } 18 19 func (s *MultiCheckerSuite) TestSuccessfulCheck(c *gc.C) { 20 chk := quota.NewMultiChecker( 21 quota.NewMapKeyValueSizeChecker(5, 10), 22 quota.NewBSONTotalSizeChecker(50), 23 ) 24 chk.Check(map[string]string{ 25 "key0": "0123456789", 26 "key": "0123456789", 27 }) 28 29 err := chk.Outcome() 30 c.Assert(err, jc.ErrorIsNil) 31 } 32 33 func (s *MultiCheckerSuite) TestExceedMaxSize(c *gc.C) { 34 chk := quota.NewMultiChecker( 35 quota.NewMapKeyValueSizeChecker(5, 10), 36 quota.NewBSONTotalSizeChecker(24), 37 ) 38 chk.Check(map[string]string{ 39 "key0": "0123456789", 40 "key": "0123456789", 41 "moar": "data", // passes key/value check but fails total size check 42 }) 43 44 err := chk.Outcome() 45 c.Assert(err, jc.Satisfies, errors.IsQuotaLimitExceeded) 46 }