ci: use bazel for unittests

This commit is contained in:
Leonard Cohnen 2023-05-04 11:59:31 +02:00 committed by Malte Poll
parent b467327128
commit c98644df2b
4 changed files with 19 additions and 110 deletions

View File

@ -24,8 +24,6 @@ on:
jobs: jobs:
test-linux: test-linux:
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
env:
CTEST_OUTPUT_ON_FAILURE: True
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
@ -48,12 +46,10 @@ jobs:
working-directory: build working-directory: build
env: env:
TMPDIR: ${{ runner.temp }} TMPDIR: ${{ runner.temp }}
run: ctest -R unit run: bazelisk test //... --test_output=errors
test-darwin: test-darwin:
runs-on: macos-12 runs-on: macos-12
env:
CTEST_OUTPUT_ON_FAILURE: True
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
@ -67,7 +63,7 @@ jobs:
cache: true cache: true
- name: CLI Unit Tests - name: CLI Unit Tests
run: go test -race -count=3 ./cli/... run: bazelisk test //cli/... --test_output=errors
- name: cdbg/debugd Unit Tests - name: cdbg/debugd Unit Tests
run: go test -race -count=3 ./debugd/... run: bazelisk test //debugd/... --test_output=errors

View File

@ -1,88 +1,8 @@
cmake_minimum_required(VERSION 3.11) cmake_minimum_required(VERSION 3.11)
project(constellation LANGUAGES C) project(constellation LANGUAGES C)
set(CLI_BUILD_TAGS "" CACHE STRING "Tags passed to go build of Constellation CLI.")
set(BAZEL "bazel" CACHE STRING "Path to bazel binary.")
enable_testing() enable_testing()
#
# disk-mapper
#
add_custom_target(disk-mapper ALL
COMMAND ${BAZEL} build //disk-mapper/cmd:disk-mapper_linux_amd64
COMMAND cp \$$\(${BAZEL} cquery --output=files //disk-mapper/cmd:disk-mapper_linux_amd64\) ${CMAKE_BINARY_DIR}/disk-mapper
COMMAND chmod +w ${CMAKE_BINARY_DIR}/disk-mapper
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
BYPRODUCTS disk-mapper
)
#
# measurement-reader
#
add_custom_target(measurement-reader ALL
COMMAND ${BAZEL} build //measurement-reader/cmd:measurement-reader_linux_amd64
COMMAND cp \$$\(${BAZEL} cquery --output=files //measurement-reader/cmd:measurement-reader_linux_amd64\) ${CMAKE_BINARY_DIR}/measurement-reader
COMMAND chmod +w ${CMAKE_BINARY_DIR}/measurement-reader
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
BYPRODUCTS measurement-reader
)
#
# bootstrapper
#
add_custom_target(bootstrapper ALL
COMMAND ${BAZEL} build //bootstrapper/cmd/bootstrapper:bootstrapper_linux_amd64
COMMAND cp \$$\(${BAZEL} cquery --output=files //bootstrapper/cmd/bootstrapper:bootstrapper_linux_amd64\) ${CMAKE_BINARY_DIR}/bootstrapper
COMMAND chmod +w ${CMAKE_BINARY_DIR}/bootstrapper
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
BYPRODUCTS bootstrapper
)
#
# upgrade-agent
#
add_custom_target(upgrade-agent ALL
COMMAND ${BAZEL} build //upgrade-agent/cmd:upgrade_agent_linux_amd64
COMMAND cp \$$\(${BAZEL} cquery --output=files //upgrade-agent/cmd:upgrade_agent_linux_amd64\) ${CMAKE_BINARY_DIR}/upgrade-agent
COMMAND chmod +w ${CMAKE_BINARY_DIR}/upgrade-agent
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
BYPRODUCTS upgrade-agent
)
#
# cli
#
add_custom_target(cli ALL
COMMAND ${BAZEL} build --@io_bazel_rules_go//go/config:tags='${CLI_BUILD_TAGS}' //cli:cli_oss_host
COMMAND cp \$$\(${BAZEL} cquery --@io_bazel_rules_go//go/config:tags='${CLI_BUILD_TAGS}' --output=files //cli:cli_oss_host\) ${CMAKE_BINARY_DIR}/constellation
COMMAND chmod +w ${CMAKE_BINARY_DIR}/constellation
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
BYPRODUCTS constellation
)
#
# debugd
#
add_custom_target(debugd ALL
COMMAND ${BAZEL} build //debugd/cmd/debugd:debugd_linux_amd64
COMMAND cp \$$\(${BAZEL} cquery --output=files //debugd/cmd/debugd:debugd_linux_amd64\) ${CMAKE_BINARY_DIR}/debugd
COMMAND chmod +w ${CMAKE_BINARY_DIR}/debugd
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
BYPRODUCTS debugd
)
#
# cdbg
#
add_custom_target(cdbg ALL
COMMAND ${BAZEL} build //debugd/cmd/cdbg:cdbg_host
COMMAND cp \$$\(${BAZEL} cquery --output=files //debugd/cmd/cdbg:cdbg_host\) ${CMAKE_BINARY_DIR}/cdbg
COMMAND chmod +w ${CMAKE_BINARY_DIR}/cdbg
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
BYPRODUCTS cdbg
)
add_test(NAME unit COMMAND bash -c "go test -race -count=3 $(go list -f '{{.Dir}}/...' -m | xargs)" WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
add_test(NAME integration-node-operator COMMAND make test WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/operators/constellation-node-operator) add_test(NAME integration-node-operator COMMAND make test WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/operators/constellation-node-operator)
add_test(NAME integration-csi COMMAND bash -c "go test -tags integration -c ./test/ && sudo ./test.test -test.v" WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/csi) add_test(NAME integration-csi COMMAND bash -c "go test -tags integration -c ./test/ && sudo ./test.test -test.v" WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/csi)
add_test(NAME integration-dm COMMAND bash -c "go test -tags integration -c ./test/ && sudo ./test.test -test.v" WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/disk-mapper/internal) add_test(NAME integration-dm COMMAND bash -c "go test -tags integration -c ./test/ && sudo ./test.test -test.v" WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/disk-mapper/internal)

View File

@ -83,13 +83,13 @@ You can also copy the `remote_cache` config from `.bazelrc` to your `~/.bazelrc`
# Test # Test
You can run all integration and unitttests like this: You can run all integration like this:
```sh ```sh
ctest -j `nproc` ctest -j `nproc`
``` ```
You can limit the execution of tests to specific targets with e.g. `ctest -R unit-*` to only execute unit tests. You can limit the execution of tests to specific targets with e.g. `ctest -R integration-node-operator`.
Some of the tests rely on libvirt and won't work if you don't have a virtualization capable CPU. You can find instructions on setting up libvirt in our [QEMU README](qemu.md). Some of the tests rely on libvirt and won't work if you don't have a virtualization capable CPU. You can find instructions on setting up libvirt in our [QEMU README](qemu.md).

View File

@ -270,19 +270,27 @@ func TestValidate(t *testing.T) {
const azErrCount = 9 const azErrCount = 9
const gcpErrCount = 6 const gcpErrCount = 6
// TODO(AB#3132,3u13r): refactor config validation tests
// Note that the `cnf.Image = ""` is a hack to align `bazel test` with `go test` behavior
// since first does version stamping.
testCases := map[string]struct { testCases := map[string]struct {
cnf *Config cnf *Config
wantErr bool wantErr bool
wantErrCount int wantErrCount int
}{ }{
"default config is not valid": { "default config is not valid": {
cnf: Default(), cnf: func() *Config {
cnf := Default()
cnf.Image = ""
return cnf
}(),
wantErr: true, wantErr: true,
wantErrCount: defaultErrCount, wantErrCount: defaultErrCount,
}, },
"v0 is one error": { "v0 is one error": {
cnf: func() *Config { cnf: func() *Config {
cnf := Default() cnf := Default()
cnf.Image = ""
cnf.Version = "v0" cnf.Version = "v0"
return cnf return cnf
}(), }(),
@ -292,6 +300,7 @@ func TestValidate(t *testing.T) {
"v0 and negative state disk are two errors": { "v0 and negative state disk are two errors": {
cnf: func() *Config { cnf: func() *Config {
cnf := Default() cnf := Default()
cnf.Image = ""
cnf.Version = "v0" cnf.Version = "v0"
cnf.StateDiskSizeGB = -1 cnf.StateDiskSizeGB = -1
return cnf return cnf
@ -302,6 +311,7 @@ func TestValidate(t *testing.T) {
"default Azure config is not valid": { "default Azure config is not valid": {
cnf: func() *Config { cnf: func() *Config {
cnf := Default() cnf := Default()
cnf.Image = ""
cnf.RemoveProviderAndAttestationExcept(cloudprovider.Azure) cnf.RemoveProviderAndAttestationExcept(cloudprovider.Azure)
return cnf return cnf
}(), }(),
@ -329,15 +339,18 @@ func TestValidate(t *testing.T) {
return cnf return cnf
}(), }(),
}, },
"default GCP config is not valid": { "default GCP config is not valid": {
cnf: func() *Config { cnf: func() *Config {
cnf := Default() cnf := Default()
cnf.RemoveProviderAndAttestationExcept(cloudprovider.GCP) cnf.RemoveProviderAndAttestationExcept(cloudprovider.GCP)
cnf.Image = ""
return cnf return cnf
}(), }(),
wantErr: true, wantErr: true,
wantErrCount: gcpErrCount, wantErrCount: gcpErrCount,
}, },
"GCP config with all required fields is valid": { "GCP config with all required fields is valid": {
cnf: func() *Config { cnf: func() *Config {
cnf := Default() cnf := Default()
@ -356,26 +369,6 @@ func TestValidate(t *testing.T) {
return cnf return cnf
}(), }(),
}, },
// TODO: v2.7: remove this test as it should start breaking after v2.6 is released.
"k8s vMAJOR.MINOR is valid in v2.7": {
cnf: func() *Config {
cnf := Default()
cnf.KubernetesVersion = "v1.25"
return cnf
}(),
wantErr: true,
wantErrCount: defaultErrCount,
},
// TODO: v2.7: remove this test as it should start breaking after v2.6 is released.
"k8s MAJOR.MINOR is valid in v2.7": {
cnf: func() *Config {
cnf := Default()
cnf.KubernetesVersion = "1.25"
return cnf
}(),
wantErr: true,
wantErrCount: defaultErrCount,
},
} }
for name, tc := range testCases { for name, tc := range testCases {