From 9822cfd4023827fc34fc9a0e62ea6302c1aedbda Mon Sep 17 00:00:00 2001 From: andretoyama-msft Date: Tue, 28 Feb 2023 16:10:14 -0300 Subject: [PATCH 1/3] add sdk-tests snap option --- build/build-snaps.sh | 29 +++++++ sdk-cpp/tests/test_data.cpp | 14 +++- .../snapcraft-agent.yaml | 17 +++- snapcraft-options/snapcraft-sdk.yaml | 77 +++++++++++++++++++ 4 files changed, 132 insertions(+), 5 deletions(-) create mode 100644 build/build-snaps.sh rename snap/snapcraft.yaml => snapcraft-options/snapcraft-agent.yaml (83%) create mode 100644 snapcraft-options/snapcraft-sdk.yaml diff --git a/build/build-snaps.sh b/build/build-snaps.sh new file mode 100644 index 00000000..b1ca8e7f --- /dev/null +++ b/build/build-snaps.sh @@ -0,0 +1,29 @@ +#! /bin/bash + +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. + +set -e + +if [ $1 == "agent" -o $1 == "sdk" ] +then + echo "Building $SNAP snap..." + + if [ ! -d "/snap" ] + then + mkdir snap + fi + + if [ $1 == "agent" ] + then + cp ./snapcraft-options/snapcraft-agent.yaml ./snap/snapcraft.yaml + + else + cp ./snapcraft-options/snapcraft-sdk.yaml ./snap/snapcraft.yaml + fi + + snapcraft + +else + echo "$1 is not a valid snap option, valid options are 'agent' or 'sdk'" +fi \ No newline at end of file diff --git a/sdk-cpp/tests/test_data.cpp b/sdk-cpp/tests/test_data.cpp index e0604e13..d624a484 100644 --- a/sdk-cpp/tests/test_data.cpp +++ b/sdk-cpp/tests/test_data.cpp @@ -10,11 +10,19 @@ const uint64_t g_smallFileSizeBytes = 1837u; const uint64_t g_largeFileSizeBytes = 536870440u; const uint64_t g_prodFileSizeBytes = 25006511u; +std::string downloadPath = "/var/lib/deliveryoptimization-snap-downloads-root"; + +// #ifdef DO_BUILD_FOR_SNAP +// downloadPath = "/var/lib/deliveryoptimization-snap-downloads-root"; +// #else +// downloadPath = (boost::filesystem::temp_directory_path()).string(); +// #endif + const std::string g_largeFileUrl = "http://main.oremdl.microsoft.com.nsatc.net/dotc/ReplacementDCATFile.txt"; const std::string g_malformedFilePath = "?f309adfasdf///dfasdfj39fjasldfjasdf/// ///.1"; -const std::string g_tmpFileName = (boost::filesystem::temp_directory_path() / boost::filesystem::path("docsdk_testfile.txt")).string(); -const std::string g_tmpFileName2 = (boost::filesystem::temp_directory_path() / boost::filesystem::path("docsdk_testfile2.txt")).string(); -const std::string g_tmpFileName3 = (boost::filesystem::temp_directory_path() / boost::filesystem::path("docsdk_testfile3.txt")).string(); +const std::string g_tmpFileName = (downloadPath / boost::filesystem::path("docsdk_testfile.txt")).string(); +const std::string g_tmpFileName2 = (downloadPath / boost::filesystem::path("docsdk_testfile2.txt")).string(); +const std::string g_tmpFileName3 = (downloadPath / boost::filesystem::path("docsdk_testfile3.txt")).string(); const std::string g_smallFileUrl = "http://main.oremdl.microsoft.com.nsatc.net/dotc/49c591d405d307e25e72a19f7e79b53d69f19954/43A54FC03C6A979E9AAEAE2493757D1429A5C8A8D093FB7B8103E8CC8DF7B6B6"; const std::string g_smallFilePhfInfoJson = R"( { diff --git a/snap/snapcraft.yaml b/snapcraft-options/snapcraft-agent.yaml similarity index 83% rename from snap/snapcraft.yaml rename to snapcraft-options/snapcraft-agent.yaml index 768e730a..25b858c6 100644 --- a/snap/snapcraft.yaml +++ b/snapcraft-options/snapcraft-agent.yaml @@ -37,6 +37,7 @@ parts: override-build: | python3 ./build/build.py --project agent --build-for-snap mkdir -p ../install/bin + mkdir -p ../install/var/run/deliveryoptimization-agent cp /tmp/build-deliveryoptimization-agent/linux-debug/client-lite/deliveryoptimization-agent ../install/bin/deliveryoptimization-agent after: @@ -64,7 +65,7 @@ parts: - libwind0-heimdal apps: - deliveryoptimization-client: + agent: command: bin/deliveryoptimization-agent daemon: simple refresh-mode: restart @@ -80,7 +81,19 @@ slots: content: port-number read: [ $SNAP_DATA/var/run/deliveryoptimization-agent ] + # Share a folder containing sdk-config.json config-file: interface: content content: config-file - write: [ $SNAP_DATA/etc/deliveryoptimization-agent/sdk-config.json ] + write: [ $SNAP_DATA/etc/deliveryoptimization-agent/configs ] + +plugs: + client-downloads-folder: + interface: content + content: client-downloads-folder + target: $SNAP_DATA/deliveryoptimization-snap-downloads-root + +layout: +# adu_data_dir + /var/lib/deliveryoptimization-snap-downloads-root: + symlink: $SNAP_DATA/deliveryoptimization-snap-downloads-root \ No newline at end of file diff --git a/snapcraft-options/snapcraft-sdk.yaml b/snapcraft-options/snapcraft-sdk.yaml new file mode 100644 index 00000000..5b351b2b --- /dev/null +++ b/snapcraft-options/snapcraft-sdk.yaml @@ -0,0 +1,77 @@ +name: deliveryoptimization-sdk +base: core20 # the base snap is the execution environment for this snap +version: '0.1' +summary: Ubuntu Core 20.04 DO +description: | + SDK snap to simulate and test the communication between the Delivery Optimization Client Ubuntu Core snap and the ADU Snap. + +grade: devel # must be 'stable' to release into candidate/stable channels +confinement: devmode # use 'strict' once you have the right plugs and slots + +##### +# +# Keywords +# +# after - Specifies part's dependencies. +# See https://snapcraft.io/docs/parts-lifecycle#heading--step-dependencies +# https://snapcraft.io/docs/parts-lifecycle +# plugin - Specifies a plugin required for building the part. +# +# slot - Specifies a code section to be shared with other snaps using Content Interface. [PROVIDER] +# See https://snapcraft.io/docs/content-interface +# plug - Specifies a target folder to access the files shared by the provider (or providers). [CONSUMER] +# See https://snapcraft.io/docs/content-interface +# +#### + +parts: + installdeps: + plugin: nil + source: . + override-build: | + ./build/scripts/bootstrap.sh --platform ubuntu2004 --install build + + sdk: + plugin: python + source: . + override-build: | + python3 ./build/build.py --project sdk --build-for-snap + mkdir -p ../install/bin + mkdir -p ../install/lib + mkdir -p ../install/var/lib/deliveryoptimization-snap-downloads-root + cp /tmp/build-deliveryoptimization-sdk/linux-debug/sdk-cpp/tests/deliveryoptimization-sdk-tests ../install/bin/deliveryoptimization-sdk-tests + cp /tmp/build-deliveryoptimization-sdk/linux-debug/sdk-cpp/libdeliveryoptimization* ../install/lib + + after: + - installdeps + + stage-packages: + - libboost-program-options1.71.0 + - libboost-filesystem1.71.0 + +apps: + sdk-tests: + command: bin/deliveryoptimization-sdk-tests + +plugs: + do-port-number: + interface: content + content: do-port-number + target: $SNAP_DATA/do-port-number + + do-config-file: + interface: content + content: do-config-file + target: $SNAP_DATA/do-config-file + +slots: + downloads-folder: + interface: content + content: downloads-folder + write: + - $SNAP_DATA/var/lib/deliveryoptimization-snap-downloads-root + +layout: + + /var/lib/deliveryoptimization-snap-downloads-root: + symlink: $SNAP_DATA/deliveryoptimization-snap-downloads-root \ No newline at end of file From 7167f2e37daee6e9658c05a2732f9cba34326d01 Mon Sep 17 00:00:00 2001 From: andretoyama-msft Date: Thu, 2 Mar 2023 18:36:45 -0300 Subject: [PATCH 2/3] fix symlink on sdk-test snap --- build/build-snaps.sh | 12 ++++++------ sdk-cpp/tests/CMakeLists.txt | 4 ++++ sdk-cpp/tests/test_data.cpp | 12 +++++------- snapcraft-options/snapcraft-sdk.yaml | 3 +-- 4 files changed, 16 insertions(+), 15 deletions(-) diff --git a/build/build-snaps.sh b/build/build-snaps.sh index b1ca8e7f..c0d6de34 100644 --- a/build/build-snaps.sh +++ b/build/build-snaps.sh @@ -5,25 +5,25 @@ set -e -if [ $1 == "agent" -o $1 == "sdk" ] +if [ $1 == "agent" -o $1 == "sdk-tests" ] then - echo "Building $SNAP snap..." + echo "Building $1 snap..." - if [ ! -d "/snap" ] + if [ ! -d "./snap" ] then - mkdir snap + mkdir ./snap fi if [ $1 == "agent" ] then cp ./snapcraft-options/snapcraft-agent.yaml ./snap/snapcraft.yaml - else + else cp ./snapcraft-options/snapcraft-sdk.yaml ./snap/snapcraft.yaml fi snapcraft else - echo "$1 is not a valid snap option, valid options are 'agent' or 'sdk'" + echo "$1 is not a valid snap option, valid options are 'agent' or 'sdk-tests'" fi \ No newline at end of file diff --git a/sdk-cpp/tests/CMakeLists.txt b/sdk-cpp/tests/CMakeLists.txt index e5d3fccc..6a2a8f04 100644 --- a/sdk-cpp/tests/CMakeLists.txt +++ b/sdk-cpp/tests/CMakeLists.txt @@ -69,6 +69,10 @@ add_executable(deliveryoptimization-sdk-tests ${test_source}) target_compile_definitions(deliveryoptimization-sdk-tests PRIVATE DO_ENABLE_EXCEPTIONS) add_platform_interface_definitions(deliveryoptimization-sdk-tests) +if (DO_BUILD_FOR_SNAP) + target_compile_definitions(deliveryoptimization-sdk-tests PUBLIC DO_BUILD_FOR_SNAP) +endif () + target_include_directories(deliveryoptimization-sdk-tests PRIVATE ${dosdkcpp_private_includes} diff --git a/sdk-cpp/tests/test_data.cpp b/sdk-cpp/tests/test_data.cpp index d624a484..577c2b0b 100644 --- a/sdk-cpp/tests/test_data.cpp +++ b/sdk-cpp/tests/test_data.cpp @@ -10,13 +10,11 @@ const uint64_t g_smallFileSizeBytes = 1837u; const uint64_t g_largeFileSizeBytes = 536870440u; const uint64_t g_prodFileSizeBytes = 25006511u; -std::string downloadPath = "/var/lib/deliveryoptimization-snap-downloads-root"; - -// #ifdef DO_BUILD_FOR_SNAP -// downloadPath = "/var/lib/deliveryoptimization-snap-downloads-root"; -// #else -// downloadPath = (boost::filesystem::temp_directory_path()).string(); -// #endif +#ifdef DO_BUILD_FOR_SNAP + std::string downloadPath = "/var/lib/deliveryoptimization-snap-downloads-root"; +#else + std::string downloadPath = (boost::filesystem::temp_directory_path()).string(); +#endif const std::string g_largeFileUrl = "http://main.oremdl.microsoft.com.nsatc.net/dotc/ReplacementDCATFile.txt"; const std::string g_malformedFilePath = "?f309adfasdf///dfasdfj39fjasldfjasdf/// ///.1"; diff --git a/snapcraft-options/snapcraft-sdk.yaml b/snapcraft-options/snapcraft-sdk.yaml index 5b351b2b..25ef8fda 100644 --- a/snapcraft-options/snapcraft-sdk.yaml +++ b/snapcraft-options/snapcraft-sdk.yaml @@ -72,6 +72,5 @@ slots: - $SNAP_DATA/var/lib/deliveryoptimization-snap-downloads-root layout: - /var/lib/deliveryoptimization-snap-downloads-root: - symlink: $SNAP_DATA/deliveryoptimization-snap-downloads-root \ No newline at end of file + symlink: $SNAP_DATA/var/lib/deliveryoptimization-snap-downloads-root \ No newline at end of file From e475ab18802df71e9578bf87829466df6e8062f3 Mon Sep 17 00:00:00 2001 From: Shishir Bhat Date: Mon, 6 Mar 2023 21:08:56 -0800 Subject: [PATCH 3/3] PR feedback --- .gitignore | 4 ++++ build/build-snaps.sh | 0 sdk-cpp/tests/CMakeLists.txt | 2 +- snapcraft-options/snapcraft-agent.yaml | 6 ++---- snapcraft-options/snapcraft-sdk.yaml | 9 ++++----- 5 files changed, 11 insertions(+), 10 deletions(-) mode change 100644 => 100755 build/build-snaps.sh diff --git a/.gitignore b/.gitignore index f75b3862..9d6e843b 100644 --- a/.gitignore +++ b/.gitignore @@ -56,3 +56,7 @@ _deps *_CPack_Packages/ *.deb out/ + +# Ubuntu Snap files +*.snap +snap/ diff --git a/build/build-snaps.sh b/build/build-snaps.sh old mode 100644 new mode 100755 diff --git a/sdk-cpp/tests/CMakeLists.txt b/sdk-cpp/tests/CMakeLists.txt index 6a2a8f04..7d1978cd 100644 --- a/sdk-cpp/tests/CMakeLists.txt +++ b/sdk-cpp/tests/CMakeLists.txt @@ -70,7 +70,7 @@ target_compile_definitions(deliveryoptimization-sdk-tests PRIVATE DO_ENABLE_EXCE add_platform_interface_definitions(deliveryoptimization-sdk-tests) if (DO_BUILD_FOR_SNAP) - target_compile_definitions(deliveryoptimization-sdk-tests PUBLIC DO_BUILD_FOR_SNAP) + target_compile_definitions(deliveryoptimization-sdk-tests PRIVATE DO_BUILD_FOR_SNAP) endif () target_include_directories(deliveryoptimization-sdk-tests diff --git a/snapcraft-options/snapcraft-agent.yaml b/snapcraft-options/snapcraft-agent.yaml index 25b858c6..ba61fcd0 100644 --- a/snapcraft-options/snapcraft-agent.yaml +++ b/snapcraft-options/snapcraft-agent.yaml @@ -1,7 +1,7 @@ name: deliveryoptimization-client base: core20 # the base snap is the execution environment for this snap version: '0.1' -summary: Ubuntu Core 20.04 DO +summary: Ubuntu Core 20.04 DO Agent description: | A proof-of-concept for the Delivery Optimization Client Ubuntu Core snap. @@ -37,7 +37,6 @@ parts: override-build: | python3 ./build/build.py --project agent --build-for-snap mkdir -p ../install/bin - mkdir -p ../install/var/run/deliveryoptimization-agent cp /tmp/build-deliveryoptimization-agent/linux-debug/client-lite/deliveryoptimization-agent ../install/bin/deliveryoptimization-agent after: @@ -81,11 +80,10 @@ slots: content: port-number read: [ $SNAP_DATA/var/run/deliveryoptimization-agent ] - # Share a folder containing sdk-config.json config-file: interface: content content: config-file - write: [ $SNAP_DATA/etc/deliveryoptimization-agent/configs ] + write: [ $SNAP_DATA/etc/deliveryoptimization-agent/sdk-config.json ] plugs: client-downloads-folder: diff --git a/snapcraft-options/snapcraft-sdk.yaml b/snapcraft-options/snapcraft-sdk.yaml index 25ef8fda..a2ee89d0 100644 --- a/snapcraft-options/snapcraft-sdk.yaml +++ b/snapcraft-options/snapcraft-sdk.yaml @@ -1,9 +1,9 @@ -name: deliveryoptimization-sdk +name: deliveryoptimization-sdk-tests base: core20 # the base snap is the execution environment for this snap version: '0.1' -summary: Ubuntu Core 20.04 DO +summary: Ubuntu Core 20.04 DO SDK Tests description: | - SDK snap to simulate and test the communication between the Delivery Optimization Client Ubuntu Core snap and the ADU Snap. + SDK snap (consumer) to test communication with the DO agent snap (producer). grade: devel # must be 'stable' to release into candidate/stable channels confinement: devmode # use 'strict' once you have the right plugs and slots @@ -38,13 +38,12 @@ parts: python3 ./build/build.py --project sdk --build-for-snap mkdir -p ../install/bin mkdir -p ../install/lib - mkdir -p ../install/var/lib/deliveryoptimization-snap-downloads-root cp /tmp/build-deliveryoptimization-sdk/linux-debug/sdk-cpp/tests/deliveryoptimization-sdk-tests ../install/bin/deliveryoptimization-sdk-tests cp /tmp/build-deliveryoptimization-sdk/linux-debug/sdk-cpp/libdeliveryoptimization* ../install/lib after: - installdeps - + stage-packages: - libboost-program-options1.71.0 - libboost-filesystem1.71.0