Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,8 @@ services:
condition: service_started
bpkimetal:
condition: service_started
bminio-init:
condition: service_completed_successfully
entrypoint: test/entrypoint.sh
working_dir: &boulder_working_dir /boulder

Expand Down Expand Up @@ -151,6 +153,31 @@ services:
- ./test/pkimetal-config.yaml:/config/config.yaml:ro
network_mode: none

bminio:
image: minio/minio:RELEASE.2025-09-07T16-13-09Z
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
networks:
bouldernet:
aliases:
- boulder-minio

bminio-init:
image: minio/mc:RELEASE.2025-08-13T08-35-41Z
depends_on:
bminio:
condition: service_started
networks:
- bouldernet
entrypoint: >
/bin/sh -c "
until mc alias set local http://boulder-minio:9000 minioadmin minioadmin >/dev/null 2>&1; do sleep 1; done;
mc mb --ignore-existing local/boulder-mtc-tiles;
exit 0;
"

bvitess:
# The `letsencrypt/boulder-vtcomboserver:latest` tag is automatically built
# in local dev environments. In CI a specific BOULDER_VTCOMBOSERVER_TAG is
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ go 1.26.0
require (
github.com/aws/aws-sdk-go-v2 v1.41.6
github.com/aws/aws-sdk-go-v2/config v1.32.16
github.com/aws/aws-sdk-go-v2/credentials v1.19.15
github.com/aws/aws-sdk-go-v2/service/s3 v1.99.1
github.com/aws/smithy-go v1.25.0
github.com/eggsampler/acme/v3 v3.8.1
Expand Down Expand Up @@ -50,7 +51,6 @@ require (
require (
filippo.io/edwards25519 v1.1.1 // indirect
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.9 // indirect
github.com/aws/aws-sdk-go-v2/credentials v1.19.15 // indirect
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.22 // indirect
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.22 // indirect
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.22 // indirect
Expand Down
8 changes: 8 additions & 0 deletions test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@ function flush_redis() {
go run ./test/boulder-tools/flushredis/main.go
}

function flush_tiles() {
go run ./test/boulder-tools/flushtiles/main.go
}

#
# Print Functions
#
Expand Down Expand Up @@ -247,6 +251,8 @@ STAGE="unit"
if [[ "${RUN[@]}" =~ "$STAGE" ]] ; then
print_heading "Running Unit Tests"
flush_redis
flush_tiles


if [ "${COVERAGE}" == "true" ]; then
UNIT_CSV=$(IFS=,; echo "${UNIT_PACKAGES[*]}")
Expand All @@ -263,6 +269,8 @@ STAGE="integration"
if [[ "${RUN[@]}" =~ "$STAGE" ]] ; then
print_heading "Running Integration Tests"
flush_redis
flush_tiles


# Set up test parameters
INTEGRATION_ARGS=("--chisel")
Expand Down
54 changes: 54 additions & 0 deletions test/boulder-tools/flushtiles/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package main

import (
"context"
"fmt"
"os"

"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/credentials"
"github.com/aws/aws-sdk-go-v2/service/s3"
"github.com/aws/aws-sdk-go-v2/service/s3/types"
)

const (
endpoint = "http://boulder-minio:9000"
bucket = "boulder-mtc-tiles"
)

func main() {
ctx := context.Background()
client := s3.New(s3.Options{
Region: "us-east-1",
BaseEndpoint: aws.String(endpoint),
Credentials: credentials.NewStaticCredentialsProvider("minioadmin", "minioadmin", ""),
UsePathStyle: true,
})

paginator := s3.NewListObjectsV2Paginator(client, &s3.ListObjectsV2Input{
Bucket: aws.String(bucket),
})
for paginator.HasMorePages() {
page, err := paginator.NextPage(ctx)
if err != nil {
fmt.Printf("while listing objects to delete: %s\n", err)
os.Exit(1)
}
if len(page.Contents) == 0 {
continue
}

ids := make([]types.ObjectIdentifier, len(page.Contents))
for i, obj := range page.Contents {
ids[i] = types.ObjectIdentifier{Key: obj.Key}
}
_, err = client.DeleteObjects(ctx, &s3.DeleteObjectsInput{
Bucket: aws.String(bucket),
Delete: &types.Delete{Objects: ids},
})
if err != nil {
fmt.Printf("while deleting objects: %s\n", err)
os.Exit(1)
}
}
}