Skip to content

Commit 01988e7

Browse files
authored
leakybucket: reduce error verbosity, test for misconfiguration (#4087)
1 parent c814664 commit 01988e7

File tree

3 files changed

+37
-4
lines changed

3 files changed

+37
-4
lines changed

cmd/crowdsec/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ func LoadBuckets(cConfig *csconfig.Config, hub *cwhub.Hub) error {
6565

6666
holders, outputEventChan, err = leakybucket.LoadBuckets(cConfig.Crowdsec, hub, scenarios, buckets, flags.OrderEvent)
6767
if err != nil {
68-
return fmt.Errorf("scenario loading failed: %w", err)
68+
return err
6969
}
7070

7171
if cConfig.Prometheus != nil && cConfig.Prometheus.Enabled {

pkg/leakybucket/manager_load.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -299,8 +299,7 @@ func loadBucketFactoriesFromFile(item *cwhub.Item, hub *cwhub.Hub, buckets *Buck
299299

300300
err = LoadBucket(&bucketFactory)
301301
if err != nil {
302-
log.Errorf("Failed to load bucket %s: %v", bucketFactory.Name, err)
303-
return nil, fmt.Errorf("loading of %s failed: %w", bucketFactory.Name, err)
302+
return nil, fmt.Errorf("bucket %s: %w", bucketFactory.Name, err)
304303
}
305304

306305
bucketFactory.orderEvent = orderEvent
@@ -370,7 +369,7 @@ func LoadBucket(bucketFactory *BucketFactory) error {
370369

371370
if bucketFactory.Filter == "" {
372371
bucketFactory.logger.Warning("Bucket without filter, abort.")
373-
return errors.New("bucket without filter directive")
372+
return errors.New("missing filter directive")
374373
}
375374

376375
bucketFactory.RunTimeFilter, err = expr.Compile(bucketFactory.Filter, exprhelpers.GetExprOptions(map[string]any{"evt": &pipeline.Event{}})...)

test/bats/scenarios.bats

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#!/usr/bin/env bats
2+
3+
set -u
4+
5+
setup_file() {
6+
load "../lib/setup_file.sh"
7+
}
8+
9+
teardown_file() {
10+
load "../lib/teardown_file.sh"
11+
}
12+
13+
setup() {
14+
load "../lib/setup.sh"
15+
./instance-data load
16+
}
17+
18+
teardown() {
19+
./instance-crowdsec stop
20+
}
21+
22+
#----------
23+
24+
@test "misconfigured scenario" {
25+
CONFIG_DIR=$(dirname "$CONFIG_YAML")
26+
mkdir -p "$CONFIG_DIR/scenarios/local"
27+
echo "name: foo" >"$CONFIG_DIR/scenarios/local/foo.yaml"
28+
config_set '.common.log_media="stdout"'
29+
rune -1 "$CROWDSEC"
30+
# XXX:
31+
assert_stderr --partial "Bucket without filter, abort."
32+
assert_stderr --partial "crowdsec init: while loading scenarios: bucket foo: missing filter directive"
33+
refute_output
34+
}

0 commit comments

Comments
 (0)