Skip to content

Commit ef6ccd9

Browse files
committed
windows install test support
1 parent 50aee21 commit ef6ccd9

File tree

11 files changed

+328
-46
lines changed

11 files changed

+328
-46
lines changed

.github/workflows/ci.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -907,6 +907,18 @@ jobs:
907907
- name: run tests
908908
run: ./ci/do_ci.ps1 cmake.test_example_plugin
909909

910+
windows_cmake_install_test:
911+
name: Windows CMake install test
912+
runs-on: windows-latest
913+
steps:
914+
- uses: actions/checkout@v4
915+
with:
916+
submodules: 'recursive'
917+
- name: Setup Windows CI Environment
918+
run: ./ci/setup_windows_ci_environment.ps1
919+
- name: Run Tests
920+
run: ./ci/do_ci.ps1 cmake.install.test
921+
910922
code_coverage:
911923
name: Code coverage
912924
runs-on: ubuntu-22.04

ci/do_ci.ps1

Lines changed: 122 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@ if (!(test-path build)) {
2020
}
2121
$BUILD_DIR = Join-Path "$SRC_DIR" "build"
2222

23+
if (!(test-path install_test)) {
24+
mkdir install_test
25+
}
26+
$INSTALL_TEST_DIR = Join-Path "$SRC_DIR" "install_test"
27+
2328
if (!(test-path plugin)) {
2429
mkdir plugin
2530
}
@@ -58,11 +63,22 @@ switch ($action) {
5863
}
5964
}
6065
"cmake.dll.test" {
66+
67+
$CMAKE_OPTIONS = @(
68+
"-DCMAKE_CXX_STANDARD=17",
69+
"-DCMAKE_BUILD_TYPE=Debug",
70+
"-DVCPKG_TARGET_TRIPLET=x64-windows",
71+
"-DCMAKE_TOOLCHAIN_FILE=$VCPKG_DIR/scripts/buildsystems/vcpkg.cmake"
72+
)
73+
74+
rm -Recurse -Force "$INSTALL_TEST_DIR\*"
6175
cd "$BUILD_DIR"
6276
cmake $SRC_DIR `
63-
-DVCPKG_TARGET_TRIPLET=x64-windows `
77+
$CMAKE_OPTIONS `
78+
"-DCMAKE_INSTALL_PREFIX=$INSTALL_TEST_DIR" `
6479
-DOPENTELEMETRY_BUILD_DLL=1 `
65-
"-DCMAKE_TOOLCHAIN_FILE=$VCPKG_DIR/scripts/buildsystems/vcpkg.cmake"
80+
-DOPENTELEMETRY_INSTALL=ON
81+
6682
$exit = $LASTEXITCODE
6783
if ($exit -ne 0) {
6884
exit $exit
@@ -77,7 +93,35 @@ switch ($action) {
7793
if ($exit -ne 0) {
7894
exit $exit
7995
}
80-
$env:PATH = "$BUILD_DIR\ext\src\dll\Debug;$env:PATH"
96+
97+
cmake --build . --target install
98+
$exit = $LASTEXITCODE
99+
if ($exit -ne 0) {
100+
exit $exit
101+
}
102+
103+
$env:PATH = "$INSTALL_TEST_DIR\bin;$env:PATH"
104+
105+
$CMAKE_OPTIONS_STRING = $CMAKE_OPTIONS -join " "
106+
107+
cmake -S "$SRC_DIR\install\test\cmake" `
108+
-B "$BUILD_DIR\install_test" `
109+
$CMAKE_OPTIONS `
110+
"-DINSTALL_TEST_CMAKE_OPTIONS=$CMAKE_OPTIONS_STRING" `
111+
"-DCMAKE_PREFIX_PATH=$INSTALL_TEST_DIR" `
112+
"-DINSTALL_TEST_COMPONENTS=ext_dll"
113+
114+
$exit = $LASTEXITCODE
115+
if ($exit -ne 0) {
116+
exit $exit
117+
}
118+
119+
ctest -C Debug --test-dir "$BUILD_DIR\install_test" --output-on-failure
120+
$exit = $LASTEXITCODE
121+
if ($exit -ne 0) {
122+
exit $exit
123+
}
124+
81125
examples\simple\Debug\example_simple.exe
82126
$exit = $LASTEXITCODE
83127
if ($exit -ne 0) {
@@ -340,6 +384,81 @@ switch ($action) {
340384
exit $exit
341385
}
342386
}
387+
"cmake.install.test" {
388+
cd "$BUILD_DIR"
389+
rm -Recurse -Force "$INSTALL_TEST_DIR\*"
390+
391+
$CMAKE_OPTIONS = @(
392+
"-DCMAKE_CXX_STANDARD=17",
393+
"-DCMAKE_BUILD_TYPE=Debug",
394+
"-DVCPKG_TARGET_TRIPLET=x64-windows",
395+
"-DCMAKE_TOOLCHAIN_FILE=$VCPKG_DIR/scripts/buildsystems/vcpkg.cmake"
396+
)
397+
398+
cmake $SRC_DIR `
399+
$CMAKE_OPTIONS `
400+
"-DCMAKE_INSTALL_PREFIX=$INSTALL_TEST_DIR" `
401+
-DWITH_ABSEIL=OFF `
402+
-DWITH_METRICS_EXEMPLAR_PREVIEW=ON `
403+
-DWITH_ASYNC_EXPORT_PREVIEW=ON `
404+
-DWITH_OTLP_GRPC=ON `
405+
-DWITH_OTLP_HTTP=ON `
406+
-DWITH_OTLP_FILE=ON `
407+
-DWITH_OTLP_HTTP_COMPRESSION=ON `
408+
-DWITH_HTTP_CLIENT_CURL=ON `
409+
-DWITH_PROMETHEUS=ON `
410+
-DWITH_ZIPKIN=ON `
411+
-DWITH_ELASTICSEARCH=ON `
412+
-DWITH_ETW=ON `
413+
-DOPENTELEMETRY_INSTALL=ON `
414+
415+
$exit = $LASTEXITCODE
416+
if ($exit -ne 0) {
417+
exit $exit
418+
}
419+
420+
cmake --build . -j $nproc
421+
$exit = $LASTEXITCODE
422+
if ($exit -ne 0) {
423+
exit $exit
424+
}
425+
426+
ctest -C Debug
427+
$exit = $LASTEXITCODE
428+
if ($exit -ne 0) {
429+
exit $exit
430+
}
431+
432+
cmake --build . --target install
433+
$exit = $LASTEXITCODE
434+
if ($exit -ne 0) {
435+
exit $exit
436+
}
437+
438+
$env:PATH = "$INSTALL_TEST_DIR\bin;$env:PATH"
439+
440+
$CMAKE_OPTIONS_STRING = $CMAKE_OPTIONS -join " "
441+
442+
cmake -S "$SRC_DIR\install\test\cmake" `
443+
-B "$BUILD_DIR\install_test" `
444+
$CMAKE_OPTIONS `
445+
"-DCMAKE_PREFIX_PATH=$INSTALL_TEST_DIR" `
446+
"-DINSTALL_TEST_CMAKE_OPTIONS=$CMAKE_OPTIONS_STRING" `
447+
"-DINSTALL_TEST_COMPONENTS=api;sdk;ext_common;ext_http_curl;exporters_in_memory;exporters_ostream;exporters_otlp_common;exporters_otlp_file;exporters_otlp_grpc;exporters_otlp_http;exporters_prometheus;exporters_elasticsearch;exporters_zipkin;exporters_etw"
448+
449+
$exit = $LASTEXITCODE
450+
if ($exit -ne 0) {
451+
exit $exit
452+
}
453+
454+
ctest -C Debug --test-dir "$BUILD_DIR\install_test" --output-on-failure
455+
$exit = $LASTEXITCODE
456+
if ($exit -ne 0) {
457+
exit $exit
458+
}
459+
460+
exit 0
461+
}
343462
default {
344463
echo "unknown action: $action"
345464
exit 1

ci/do_ci.sh

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -242,10 +242,13 @@ elif [[ "$1" == "cmake.opentracing_shim.test" ]]; then
242242
make test
243243
make install
244244
export LD_LIBRARY_PATH="${INSTALL_TEST_DIR}/lib:$LD_LIBRARY_PATH"
245+
CMAKE_OPTIONS_STRING=$(IFS=" "; echo "${CMAKE_OPTIONS[*]}")
245246
cmake -S "${SRC_DIR}/install/test/cmake" \
246247
-B "${BUILD_DIR}/install_test" \
248+
"${CMAKE_OPTIONS[@]}" \
247249
"-DCMAKE_PREFIX_PATH=${INSTALL_TEST_DIR}" \
248-
"-DCOMPONENTS_TO_TEST=shims_opentracing"
250+
"-DINSTALL_TEST_CMAKE_OPTIONS=${CMAKE_OPTIONS_STRING}" \
251+
"-DINSTALL_TEST_COMPONENTS=api;sdk;exporters_in_memory;exporters_ostream;shims_opentracing"
249252
ctest --test-dir "${BUILD_DIR}/install_test" --output-on-failure
250253
exit 0
251254
elif [[ "$1" == "cmake.c++20.test" ]]; then
@@ -442,12 +445,18 @@ elif [[ "$1" == "cmake.install.test" ]]; then
442445
-DOPENTELEMETRY_INSTALL=ON \
443446
"${SRC_DIR}"
444447
make -j $(nproc)
448+
make test
445449
make install
446450
export LD_LIBRARY_PATH="${INSTALL_TEST_DIR}/lib:$LD_LIBRARY_PATH"
451+
452+
CMAKE_OPTIONS_STRING=$(IFS=" "; echo "${CMAKE_OPTIONS[*]}")
453+
447454
cmake -S "${SRC_DIR}/install/test/cmake" \
448455
-B "${BUILD_DIR}/install_test" \
456+
"${CMAKE_OPTIONS[@]}" \
449457
"-DCMAKE_PREFIX_PATH=${INSTALL_TEST_DIR}" \
450-
"-DCOMPONENTS_TO_TEST=api;sdk;ext_common;ext_http_curl;exporters_in_memory;exporters_ostream;exporters_otlp_common;exporters_otlp_file;exporters_otlp_grpc;exporters_otlp_http;exporters_prometheus;exporters_elasticsearch;exporters_zipkin"
458+
"-DINSTALL_TEST_CMAKE_OPTIONS=${CMAKE_OPTIONS_STRING}" \
459+
"-DINSTALL_TEST_COMPONENTS=api;sdk;ext_common;ext_http_curl;exporters_in_memory;exporters_ostream;exporters_otlp_common;exporters_otlp_file;exporters_otlp_grpc;exporters_otlp_http;exporters_prometheus;exporters_elasticsearch;exporters_zipkin"
451460
ctest --test-dir "${BUILD_DIR}/install_test" --output-on-failure
452461
exit 0
453462
elif [[ "$1" == "cmake.test_example_plugin" ]]; then

ci/setup_windows_ci_environment.ps1

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,7 @@ $VCPKG_DIR = (Get-Item -Path ".\").FullName
2525
# curl
2626
./vcpkg "--vcpkg-root=$VCPKG_DIR" install curl:x64-windows
2727

28+
# prometheus-cpp
29+
./vcpkg "--vcpkg-root=$VCPKG_DIR" install prometheus-cpp:x64-windows
30+
2831
Pop-Location

cmake/component-definitions.cmake

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -152,18 +152,8 @@ set(COMPONENT_ext_dll_COMPONENT_DEPENDS
152152
api
153153
sdk
154154
ext_common
155-
ext_http_curl
156155
exporters_in_memory
157156
exporters_ostream
158-
exporters_otlp_common
159-
exporters_otlp_file
160-
exporters_otlp_grpc
161-
exporters_otlp_http
162-
exporters_prometheus
163-
exporters_elasticsearch
164-
exporters_etw
165-
exporters_zipkin
166-
shims_opentracing
167157
)
168158

169159
set(COMPONENT_exporters_in_memory_COMPONENT_DEPENDS

cmake/find-package-support-functions.cmake

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,6 @@ function (is_dependency_required dependency_in components_in is_required_out)
161161
message(FATAL_ERROR " is_dependency_required: The BUILT_WITH_${dependency_in} flag is required but not defined in the 'thirdparty-built-with-flags.cmake' file")
162162
elseif(NOT BUILT_WITH_${dependency_in})
163163
set(${is_required_out} FALSE PARENT_SCOPE)
164-
message(DEBUG "is_dependency_required: ${dependency_in} is not required because that package was not built with it.")
165164
else()
166165
foreach(component IN LISTS ${components_in})
167166
set(is_required_by_component FALSE)

cmake/templates/thirdparty-built-with-flags.cmake.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ if(@WITH_HTTP_CLIENT_CURL@ AND NOT "@BUILD_SHARED_LIBS@")
4141
endif()
4242

4343
# nlohmann_json:
44-
if("@USE_NLOHMANN_JSON@" AND "@nlohmann_json_FOUND@")
44+
if("@USE_NLOHMANN_JSON@")
4545
set(BUILT_WITH_nlohmann_json TRUE)
4646
endif()
4747

install/test/cmake/CMakeLists.txt

Lines changed: 36 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,35 +4,48 @@
44
cmake_minimum_required(VERSION 3.10)
55
project(opentelemetry-cpp-component-install-tests LANGUAGES CXX)
66

7-
if(CXX_STANDARD)
8-
message(STATUS "CMAKE_CXX_STANDARD is set from CXX_STANDARD=${CXX_STANDARD}")
9-
set(CMAKE_CXX_STANDARD $CXX_STANDARD)
10-
else()
11-
set(CMAKE_CXX_STANDARD 14)
12-
message(
13-
STATUS "CMAKE_CXX_STANDARD is set to default of ${CMAKE_CXX_STANDARD}")
7+
if(NOT INSTALL_TEST_CMAKE_OPTIONS)
8+
set(INSTALL_TEST_CMAKE_OPTIONS
9+
"-DCMAKE_CXX_STANDARD=14 -DCMAKE_BUILD_TYPE=Debug")
1410
endif()
1511

16-
include(${CMAKE_SOURCE_DIR}/../../../cmake/component-definitions.cmake)
12+
separate_arguments(INSTALL_TEST_CMAKE_OPTIONS)
13+
14+
message(
15+
STATUS "INSTALL_TEST_CMAKE_OPTIONS is set to ${INSTALL_TEST_CMAKE_OPTIONS}")
16+
17+
find_package(opentelemetry-cpp CONFIG REQUIRED)
1718

18-
# Check that COMPONENTS_TO_TEST is set and contains valid components
19-
if(NOT COMPONENTS_TO_TEST)
20-
message(FATAL_ERROR "COMPONENTS_TO_TEST is not set")
19+
message(
20+
STATUS
21+
"OPENTELEMETRY_CPP_COMPONENTS_INSTALLED = ${OPENTELEMETRY_CPP_COMPONENTS_INSTALLED}"
22+
)
23+
24+
# Check that INSTALL_TEST_COMPONENTS is set and contains installed components
25+
if(NOT INSTALL_TEST_COMPONENTS)
26+
message(
27+
STATUS
28+
"INSTALL_TEST_COMPONENTS is not set. Setting to OPENTELEMETRY_CPP_COMPONENTS_INSTALLED"
29+
)
30+
set(INSTALL_TEST_COMPONENTS ${OPENTELEMETRY_CPP_COMPONENTS_INSTALLED})
2131
else()
2232
set(COMPONENTS_ARE_VALID TRUE)
23-
foreach(component ${COMPONENTS_TO_TEST})
24-
if(NOT component IN_LIST opentelemetry-cpp_COMPONENTS)
33+
foreach(component ${INSTALL_TEST_COMPONENTS})
34+
if(NOT component IN_LIST OPENTELEMETRY_CPP_COMPONENTS_INSTALLED)
2535
message(
2636
ERROR
27-
" Component ${component} is not a valid opentelemetry-cpp component")
37+
" Component ${component} is not an installed opentelemetry-cpp component"
38+
)
2839
set(COMPONENTS_ARE_VALID FALSE)
2940
endif()
3041
endforeach()
3142
if(NOT COMPONENTS_ARE_VALID)
32-
message(FATAL_ERROR "COMPONENTS_TO_TEST contains invalid components")
43+
message(FATAL_ERROR "INSTALL_TEST_COMPONENTS contains invalid components")
3344
endif()
3445
endif()
3546

47+
message(STATUS "INSTALL_TEST_COMPONENTS = ${INSTALL_TEST_COMPONENTS}")
48+
3649
set(INSTALL_TEST_SRC_DIR "${CMAKE_SOURCE_DIR}/../src")
3750

3851
enable_testing()
@@ -53,31 +66,31 @@ add_test(
5366
${CMAKE_COMMAND} --log-level=DEBUG -S
5467
${CMAKE_SOURCE_DIR}/usage_tests/no_components -B
5568
build-cmake-usage-no-components-test
56-
-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH})
69+
-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH} ${INSTALL_TEST_CMAKE_OPTIONS})
5770

5871
add_test(
5972
NAME cmake-usage-unsorted-components-test
6073
COMMAND
6174
${CMAKE_COMMAND} --log-level=DEBUG -S
6275
${CMAKE_SOURCE_DIR}/usage_tests/unsorted_components -B
6376
build-cmake-usage-unsorted-components-test
64-
-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH})
77+
-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH} ${INSTALL_TEST_CMAKE_OPTIONS})
6578

6679
add_test(
6780
NAME cmake-usage-missing-components-test
6881
COMMAND
6982
${CMAKE_COMMAND} --log-level=DEBUG -S
7083
${CMAKE_SOURCE_DIR}/usage_tests/missing_components -B
7184
build-cmake-usage-missing-components-test
72-
-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH})
85+
-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH} ${INSTALL_TEST_CMAKE_OPTIONS})
7386

7487
add_test(
7588
NAME cmake-usage-unsupported-components-test
7689
COMMAND
7790
${CMAKE_COMMAND} --log-level=DEBUG -S
7891
${CMAKE_SOURCE_DIR}/usage_tests/unsupported_components -B
7992
build-cmake-usage-unsupported-components-test
80-
-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH})
93+
-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH} ${INSTALL_TEST_CMAKE_OPTIONS})
8194

8295
# -----------------------------------------------------------
8396
# Test the full package install using legacy cmake build instructions
@@ -89,6 +102,8 @@ add_test(
89102
COMMAND
90103
${CMAKE_COMMAND} --log-level=DEBUG -S ${CMAKE_SOURCE_DIR}/package_test -B
91104
build-full-package-test -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}
105+
${INSTALL_TEST_CMAKE_OPTIONS}
106+
-DINSTALL_TEST_COMPONENTS=${INSTALL_TEST_COMPONENTS}
92107
-DINSTALL_TEST_SRC_DIR=${INSTALL_TEST_SRC_DIR})
93108

94109
# Build the full package test executable
@@ -103,14 +118,15 @@ add_test(NAME full-package-run-test
103118

104119
# -----------------------------------------------------------
105120
# Loop over all the components to test
106-
foreach(component ${COMPONENTS_TO_TEST})
121+
foreach(component ${INSTALL_TEST_COMPONENTS})
107122
# Test cmake configuration
108123
add_test(
109124
NAME component-${component}-cmake-config-test
110125
COMMAND
111126
${CMAKE_COMMAND} --log-level=DEBUG -S
112127
${CMAKE_SOURCE_DIR}/component_tests/${component} -B
113128
build-${component}-test -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}
129+
${INSTALL_TEST_CMAKE_OPTIONS}
114130
-DINSTALL_TEST_SRC_DIR=${INSTALL_TEST_SRC_DIR})
115131

116132
# Build the component test executable

0 commit comments

Comments
 (0)