Skip to content

Commit 28be5f9

Browse files
committed
windows components install tests
1 parent 2a8f682 commit 28be5f9

File tree

27 files changed

+447
-76
lines changed

27 files changed

+447
-76
lines changed

.devcontainer/Dockerfile.dev

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ RUN cd /opt/ci && bash setup_ci_environment.sh
3030
RUN cd /opt && bash ci/setup_googletest.sh \
3131
&& bash ci/install_abseil.sh \
3232
&& bash ci/install_protobuf.sh \
33-
&& bash ci/setup_grpc.sh -r $GRPC_VERSION -s $CXX_STANDARD -p protobuf -p abseil
33+
&& bash ci/setup_grpc.sh -r $GRPC_VERSION -s $CXX_STANDARD -p protobuf -p abseil-cpp
3434

3535
ADD https://github.com/bazelbuild/bazelisk/releases/download/v1.22.1/bazelisk-linux-amd64 /usr/local/bin
3636

.github/workflows/ci.yml

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -567,7 +567,7 @@ jobs:
567567
run: |
568568
sudo -E ./ci/install_abseil.sh
569569
sudo -E ./ci/install_protobuf.sh
570-
sudo -E ./ci/setup_grpc.sh -r $GRPC_VERSION -s $CXX_STANDARD -p protobuf -p abseil
570+
sudo -E ./ci/setup_grpc.sh -r $GRPC_VERSION -s $CXX_STANDARD -p protobuf -p abseil-cpp
571571
- name: build and test
572572
run: |
573573
./ci/do_ci.sh cmake.install.test
@@ -860,6 +860,8 @@ jobs:
860860
run: ./ci/do_ci.ps1 cmake.dll.cxx20.test
861861
- name: run otprotocol test (DLL build)
862862
run: ./ci/do_ci.ps1 cmake.exporter.otprotocol.dll.test
863+
- name: run cmake install test
864+
run: ./ci/do_ci.ps1 cmake.dll.install.test
863865

864866
windows_with_async_export:
865867
name: CMake (With async export) -> exporter proto
@@ -903,6 +905,18 @@ jobs:
903905
- name: run tests
904906
run: ./ci/do_ci.ps1 cmake.test_example_plugin
905907

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

ci/do_ci.ps1

Lines changed: 198 additions & 0 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
}
@@ -340,6 +345,199 @@ switch ($action) {
340345
exit $exit
341346
}
342347
}
348+
"cmake.install.test" {
349+
Remove-Item -Recurse -Force "$BUILD_DIR\*"
350+
Remove-Item -Recurse -Force "$INSTALL_TEST_DIR\*"
351+
cd "$BUILD_DIR"
352+
353+
if (Test-Path Env:\CXX_STANDARD) {
354+
$CXX_STANDARD = [int](Get-Item Env:\CXX_STANDARD).Value
355+
} else {
356+
$CXX_STANDARD = 14
357+
}
358+
if (-not $CXX_STANDARD) {
359+
$CXX_STANDARD = 14
360+
}
361+
Write-Host "Using CXX_STANDARD: $CXX_STANDARD"
362+
363+
$CMAKE_OPTIONS = @(
364+
"-DCMAKE_CXX_STANDARD=$CXX_STANDARD",
365+
"-DCMAKE_CXX_STANDARD_REQUIRED=ON",
366+
"-DCMAKE_CXX_EXTENSIONS=OFF",
367+
"-DVCPKG_TARGET_TRIPLET=x64-windows",
368+
"-DCMAKE_TOOLCHAIN_FILE=$VCPKG_DIR/scripts/buildsystems/vcpkg.cmake"
369+
)
370+
371+
cmake $SRC_DIR `
372+
$CMAKE_OPTIONS `
373+
"-DCMAKE_INSTALL_PREFIX=$INSTALL_TEST_DIR" `
374+
-DWITH_ABI_VERSION_1=OFF `
375+
-DWITH_ABI_VERSION_2=ON `
376+
-DWITH_ABSEIL=OFF `
377+
-DWITH_THREAD_INSTRUMENTATION_PREVIEW=ON `
378+
-DWITH_METRICS_EXEMPLAR_PREVIEW=ON `
379+
-DWITH_ASYNC_EXPORT_PREVIEW=ON `
380+
-DWITH_OTLP_GRPC_SSL_MTLS_PREVIEW=ON `
381+
-DWITH_OTLP_RETRY_PREVIEW=ON `
382+
-DWITH_OTLP_GRPC=ON `
383+
-DWITH_OTLP_HTTP=ON `
384+
-DWITH_OTLP_FILE=ON `
385+
-DWITH_OTLP_HTTP_COMPRESSION=ON `
386+
-DWITH_HTTP_CLIENT_CURL=ON `
387+
-DWITH_PROMETHEUS=ON `
388+
-DWITH_ZIPKIN=ON `
389+
-DWITH_ELASTICSEARCH=ON `
390+
-DWITH_ETW=ON `
391+
-DWITH_EXAMPLES=ON `
392+
-DOPENTELEMETRY_INSTALL=ON
393+
394+
$exit = $LASTEXITCODE
395+
if ($exit -ne 0) {
396+
exit $exit
397+
}
398+
399+
cmake --build . -j $nproc
400+
$exit = $LASTEXITCODE
401+
if ($exit -ne 0) {
402+
exit $exit
403+
}
404+
405+
ctest -C Debug
406+
$exit = $LASTEXITCODE
407+
if ($exit -ne 0) {
408+
exit $exit
409+
}
410+
411+
cmake --build . --target install
412+
$exit = $LASTEXITCODE
413+
if ($exit -ne 0) {
414+
exit $exit
415+
}
416+
417+
$env:PATH = "$INSTALL_TEST_DIR\bin;$env:PATH"
418+
419+
$CMAKE_OPTIONS_STRING = $CMAKE_OPTIONS -join " "
420+
421+
$EXPECTED_COMPONENTS = @(
422+
"api",
423+
"sdk",
424+
"ext_common",
425+
"ext_http_curl",
426+
"exporters_in_memory",
427+
"exporters_ostream",
428+
"exporters_otlp_common",
429+
"exporters_otlp_file",
430+
"exporters_otlp_grpc",
431+
"exporters_otlp_http",
432+
"exporters_prometheus",
433+
"exporters_elasticsearch",
434+
"exporters_zipkin",
435+
"exporters_etw"
436+
)
437+
$EXPECTED_COMPONENTS_STRING = $EXPECTED_COMPONENTS -join ";"
438+
439+
cmake -S "$SRC_DIR\install\test\cmake" `
440+
-B "$BUILD_DIR\install_test" `
441+
$CMAKE_OPTIONS `
442+
"-DCMAKE_PREFIX_PATH=$INSTALL_TEST_DIR" `
443+
"-DINSTALL_TEST_CMAKE_OPTIONS=$CMAKE_OPTIONS_STRING" `
444+
"-DINSTALL_TEST_COMPONENTS=$EXPECTED_COMPONENTS_STRING"
445+
446+
$exit = $LASTEXITCODE
447+
if ($exit -ne 0) {
448+
exit $exit
449+
}
450+
451+
ctest -C Debug --test-dir "$BUILD_DIR\install_test" --output-on-failure
452+
$exit = $LASTEXITCODE
453+
if ($exit -ne 0) {
454+
exit $exit
455+
}
456+
457+
exit 0
458+
}
459+
"cmake.dll.install.test" {
460+
cd "$BUILD_DIR"
461+
rm -Recurse -Force "$INSTALL_TEST_DIR\*"
462+
463+
$CMAKE_OPTIONS = @(
464+
"-DCMAKE_CXX_STANDARD=17",
465+
"-DVCPKG_TARGET_TRIPLET=x64-windows",
466+
"-DCMAKE_TOOLCHAIN_FILE=$VCPKG_DIR/scripts/buildsystems/vcpkg.cmake"
467+
)
468+
469+
cmake $SRC_DIR `
470+
$CMAKE_OPTIONS `
471+
"-DCMAKE_INSTALL_PREFIX=$INSTALL_TEST_DIR" `
472+
-DOPENTELEMETRY_BUILD_DLL=1 `
473+
-DWITH_ABI_VERSION_1=ON `
474+
-DWITH_ABI_VERSION_2=OFF `
475+
-DWITH_ABSEIL=OFF `
476+
-DWITH_THREAD_INSTRUMENTATION_PREVIEW=ON `
477+
-DWITH_METRICS_EXEMPLAR_PREVIEW=ON `
478+
-DWITH_ETW=ON `
479+
-DOPENTELEMETRY_INSTALL=ON
480+
481+
$exit = $LASTEXITCODE
482+
if ($exit -ne 0) {
483+
exit $exit
484+
}
485+
486+
cmake --build . -j $nproc
487+
$exit = $LASTEXITCODE
488+
if ($exit -ne 0) {
489+
exit $exit
490+
}
491+
492+
ctest -C Debug
493+
$exit = $LASTEXITCODE
494+
if ($exit -ne 0) {
495+
exit $exit
496+
}
497+
498+
cmake --build . --target install
499+
$exit = $LASTEXITCODE
500+
if ($exit -ne 0) {
501+
exit $exit
502+
}
503+
504+
$env:PATH = "$INSTALL_TEST_DIR\bin;$env:PATH"
505+
506+
echo "$env:PATH"
507+
508+
$CMAKE_OPTIONS_STRING = $CMAKE_OPTIONS -join " "
509+
510+
$EXPECTED_COMPONENTS = @(
511+
"api",
512+
"sdk",
513+
"ext_common",
514+
"exporters_in_memory",
515+
"exporters_ostream",
516+
"exporters_etw",
517+
"ext_dll"
518+
)
519+
$EXPECTED_COMPONENTS_STRING = $EXPECTED_COMPONENTS -join ";"
520+
521+
cmake -S "$SRC_DIR\install\test\cmake" `
522+
-B "$BUILD_DIR\install_test" `
523+
$CMAKE_OPTIONS `
524+
"-DCMAKE_PREFIX_PATH=$INSTALL_TEST_DIR" `
525+
"-DINSTALL_TEST_CMAKE_OPTIONS=$CMAKE_OPTIONS_STRING" `
526+
"-DINSTALL_TEST_COMPONENTS=$EXPECTED_COMPONENTS_STRING"
527+
528+
$exit = $LASTEXITCODE
529+
if ($exit -ne 0) {
530+
exit $exit
531+
}
532+
533+
ctest -C Debug --test-dir "$BUILD_DIR\install_test" --output-on-failure
534+
$exit = $LASTEXITCODE
535+
if ($exit -ne 0) {
536+
exit $exit
537+
}
538+
539+
exit 0
540+
}
343541
default {
344542
echo "unknown action: $action"
345543
exit 1

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/templates/opentelemetry-cpp-config.cmake.in

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -200,9 +200,11 @@ check_targets_imported(_OPENTELEMETRY_CPP_TARGETS)
200200
# Set OPENTELEMETRY_CPP_* variables
201201
set(OPENTELEMETRY_CPP_LIBRARIES)
202202

203+
set(DLL_TARGET "opentelemetry-cpp::opentelemetry_cpp")
204+
203205
foreach(_TARGET IN LISTS _OPENTELEMETRY_CPP_TARGETS)
204-
if(TARGET ${_TARGET})
205-
list(APPEND OPENTELEMETRY_CPP_LIBRARIES ${_TARGET})
206+
if(TARGET "${_TARGET}" AND NOT "${_TARGET}" STREQUAL "${DLL_TARGET}")
207+
list(APPEND OPENTELEMETRY_CPP_LIBRARIES "${_TARGET}")
206208
endif()
207209
endforeach()
208210

0 commit comments

Comments
 (0)