From 390dc51ac39de2fbfd7dc670733ffa9e72c483b8 Mon Sep 17 00:00:00 2001 From: xucaiming <719260170@qq.com> Date: Sun, 30 Jul 2023 10:01:51 +0800 Subject: [PATCH 1/7] add iperf Signed-off-by: xucaiming <719260170@qq.com> --- thirdparty/iperf/HPKBUILD | 102 +++++++++ thirdparty/iperf/HPKCHECK | 15 ++ thirdparty/iperf/LICENSE | 201 ++++++++++++++++++ thirdparty/iperf/OAT.xml | 20 ++ thirdparty/iperf/README.OpenSource | 11 + thirdparty/iperf/README_zh.md | 11 + thirdparty/iperf/SHA512SUM | 1 + thirdparty/iperf/docs/hap_integrate.md | 91 ++++++++ .../iperf/docs/pic/iperf_install_dir.png | Bin 0 -> 63275 bytes thirdparty/iperf/docs/pic/iperf_test.png | Bin 0 -> 30010 bytes thirdparty/iperf/docs/pic/iperf_usage.png | Bin 0 -> 45722 bytes 11 files changed, 452 insertions(+) create mode 100644 thirdparty/iperf/HPKBUILD create mode 100644 thirdparty/iperf/HPKCHECK create mode 100755 thirdparty/iperf/LICENSE create mode 100755 thirdparty/iperf/OAT.xml create mode 100755 thirdparty/iperf/README.OpenSource create mode 100755 thirdparty/iperf/README_zh.md create mode 100644 thirdparty/iperf/SHA512SUM create mode 100755 thirdparty/iperf/docs/hap_integrate.md create mode 100755 thirdparty/iperf/docs/pic/iperf_install_dir.png create mode 100755 thirdparty/iperf/docs/pic/iperf_test.png create mode 100755 thirdparty/iperf/docs/pic/iperf_usage.png diff --git a/thirdparty/iperf/HPKBUILD b/thirdparty/iperf/HPKBUILD new file mode 100644 index 00000000..a30181f9 --- /dev/null +++ b/thirdparty/iperf/HPKBUILD @@ -0,0 +1,102 @@ +# Contributor: xucaiming <719260170@qq.com> +# Maintainer: xucaiming <719260170@qq.com> + +pkgname=iperf +pkgver=3.14 +pkgrel=0 +pkgdesc="iperf3: A TCP, UDP, and SCTP network bandwidth measurement tool" +url="https://github.com/esnet/iperf" +archs=("armeabi-v7a" "arm64-v8a") +license=("BSD-3-Clause") +depends=("openssl") +makedepends=() + +source="https://github.com/esnet/$pkgname/archive/refs/tags/$pkgver.tar.gz" +builddir=$pkgname-$pkgver +packagename=$builddir.tar.gz +buildtools="configure" + +autounpack=true +downloadpackage=true + +source envset.sh +host= +prepare() { + mkdir -p $builddir/$ARCH-build + if [ $ARCH == "armeabi-v7a" ] + then + setarm32ENV + host=arm-linux + fi + if [ $ARCH == "arm64-v8a" ] + then + setarm64ENV + host=aarch64-linux + fi + cd $builddir + cd $OLDPWD +} + +build() { + + cd $builddir/$ARCH-build + ../configure "$@" --host=$host \ + LDFLAGS="${LDFLAGS} -L${LYCIUM_ROOT}/usr/openssl/${ARCH}/lib" \ + CFLAGS="${CFLAGS} -I${LYCIUM_ROOT}/usr/openssl/${ARCH}/include" > `pwd`/build.log 2>&1 + make -j4 >> `pwd`/build.log 2>&1 + ret=$? + cd $OLDPWD + return $ret +} + +package() { + cd $builddir/$ARCH-build + make install >> `pwd`/build.log 2>&1 + cd $OLDPWD + unset host +} + +check() { + cd $builddir/$ARCH-build/src + sed -i 's/libiperf.la: $(libiperf_la_OBJECTS) $(libiperf_la_DEPENDENCIES)/#libiperf.la: $(libiperf_la_OBJECTS) $(libiperf_la_DEPENDENCIES) /' ./Makefile + sed -i 's/$(AM_V_CCLD)$(LINK) -rpath $(libdir) $(libiperf_la_OBJECTS)/#$(AM_V_CCLD)$(LINK) -rpath $(libdir) $(libiperf_la_OBJECTS) /' ./Makefile + sed -i 's/t_api$(EXEEXT): $(t_api_OBJECTS) $(t_api_DEPENDENCIES)/#t_api$(EXEEXT): $(t_api_OBJECTS) $(t_api_DEPENDENCIES) /' ./Makefile + sed -i 's/@rm -f t_api$(EXEEXT)/#@rm -f t_api$(EXEEXT) /' ./Makefile + sed -i 's/$(AM_V_CCLD)$(t_api_LINK) $(t_api_OBJECTS)/#$(AM_V_CCLD)$(t_api_LINK) $(t_api_OBJECTS) /' ./Makefile + sed -i 's/t_auth$(EXEEXT): $(t_auth_OBJECTS) $(t_auth_DEPENDENCIES)/#t_auth$(EXEEXT): $(t_auth_OBJECTS) $(t_auth_DEPENDENCIES) /' ./Makefile + sed -i 's/@rm -f t_auth$(EXEEXT)/#@rm -f t_auth$(EXEEXT) /' ./Makefile + sed -i 's/$(AM_V_CCLD)$(t_auth_LINK) $(t_auth_OBJECTS)/#$(AM_V_CCLD)$(t_auth_LINK) $(t_auth_OBJECTS) /' ./Makefile + sed -i 's/t_timer$(EXEEXT): $(t_timer_OBJECTS) $(t_timer_DEPENDENCIES)/#t_timer$(EXEEXT): $(t_timer_OBJECTS) $(t_timer_DEPENDENCIES) /' ./Makefile + sed -i 's/@rm -f t_timer$(EXEEXT)/#@rm -f t_timer$(EXEEXT) /' ./Makefile + sed -i 's/$(AM_V_CCLD)$(t_timer_LINK) $(t_timer_OBJECTS)/#$(AM_V_CCLD)$(t_timer_LINK) $(t_timer_OBJECTS) /' ./Makefile + sed -i 's/t_units$(EXEEXT): $(t_units_OBJECTS) $(t_units_DEPENDENCIES)/#t_units$(EXEEXT): $(t_units_OBJECTS) $(t_units_DEPENDENCIES) /' ./Makefile + sed -i 's/@rm -f t_units$(EXEEXT)/#@rm -f t_units$(EXEEXT) /' ./Makefile + sed -i 's/$(AM_V_CCLD)$(t_units_LINK) $(t_units_OBJECTS)/#$(AM_V_CCLD)$(t_units_LINK) $(t_units_OBJECTS) /' ./Makefile + sed -i 's/t_uuid$(EXEEXT): $(t_uuid_OBJECTS) $(t_uuid_DEPENDENCIES)/#t_uuid$(EXEEXT): $(t_uuid_OBJECTS) $(t_uuid_DEPENDENCIES) /' ./Makefile + sed -i 's/@rm -f t_uuid$(EXEEXT)/#@rm -f t_uuid$(EXEEXT) /' ./Makefile + sed -i 's/$(AM_V_CCLD)$(t_uuid_LINK) $(t_uuid_OBJECTS)/#$(AM_V_CCLD)$(t_uuid_LINK) $(t_uuid_OBJECTS) /' ./Makefile + sed -i 's/$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iperf3_CFLAGS) $(CFLAGS) -MT iperf3-main.o -MD -MP -MF/#$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iperf3_CFLAGS) $(CFLAGS) -MT iperf3-main.o -MD -MP -MF /' ./Makefile + sed -i 's/$(AM_V_at)$(am__mv) $(DEPDIR)\/iperf3-main.Tpo $(DEPDIR)\/iperf3-main.Po/#$(AM_V_at)$(am__mv) $(DEPDIR)\/iperf3-main.Tpo $(DEPDIR)\/iperf3-main.Po /' ./Makefile + sed -i 's/.c.lo:/#.c.lo: /' ./Makefile + + cp ../../src/private.pem ./ + cp ../../src/public.pem ./ + + if [ $ARCH == "armeabi-v7a" ] + then + unsetarm32ENV + fi + if [ $ARCH == "arm64-v8a" ] + then + unsetarm64ENV + fi + + cd $OLDPWD + echo "The test must be on an OpenHarmony device!" + # cd $builddir/$ARCH-build/src + # make check >> `pwd`/build.log 2>&1 +} + +cleanbuild() { + rm -rf ${PWD}/$builddir +} diff --git a/thirdparty/iperf/HPKCHECK b/thirdparty/iperf/HPKCHECK new file mode 100644 index 00000000..23253c21 --- /dev/null +++ b/thirdparty/iperf/HPKCHECK @@ -0,0 +1,15 @@ +# Contributor: xucaiming <719260170@qq.com> +# Maintainer: xucaiming <719260170@qq.com> + +source HPKBUILD > /dev/null 2>&1 +logfile=${LYCIUM_THIRDPARTY_ROOT}/${pkgname}/${pkgname}_${ARCH}_${OHOS_SDK_VER}_test.log + +openharmonycheck() { + res=0 + cd $builddir/$ARCH-build/src + make check > ${logfile} 2>&1 + res=$? + cd $OLDPWD + + return $res +} diff --git a/thirdparty/iperf/LICENSE b/thirdparty/iperf/LICENSE new file mode 100755 index 00000000..81975837 --- /dev/null +++ b/thirdparty/iperf/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright {yyyy} {name of copyright owner} + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. \ No newline at end of file diff --git a/thirdparty/iperf/OAT.xml b/thirdparty/iperf/OAT.xml new file mode 100755 index 00000000..fb731892 --- /dev/null +++ b/thirdparty/iperf/OAT.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/thirdparty/iperf/README.OpenSource b/thirdparty/iperf/README.OpenSource new file mode 100755 index 00000000..ac15a7b8 --- /dev/null +++ b/thirdparty/iperf/README.OpenSource @@ -0,0 +1,11 @@ +[ + { + "Name": "iperf", + "License": " BSD-3-Clause license", + "License File": "LICENSES", + "Version Number": "3.14", + "Owner": "cmxud@isoftstone.com", + "Upstream URL": "https://github.com/esnet/iperf/archive/refs/tags/3.14.tar.gz", + "Description": "iperf3: A TCP, UDP, and SCTP network bandwidth measurement tool" + } +] diff --git a/thirdparty/iperf/README_zh.md b/thirdparty/iperf/README_zh.md new file mode 100755 index 00000000..b64b079b --- /dev/null +++ b/thirdparty/iperf/README_zh.md @@ -0,0 +1,11 @@ +# iperf三方库说明 +## 功能简介 +iperf是一个网络性能测试工具,iperf可以测试TCP和UDP带宽质量。iperf即可测量最大TCP带宽,也具有多种参数和UDP特性,且可报告带宽,延迟抖动和数据包丢失 +## 使用约束 +- IDE版本:DevEco Studio 3.1 Release +- SDK版本:ohos_sdk_public 4.0.8.1 (API Version 10 Release) +- 三方库版本:3.14 +- 当前适配的功能: iperf是一个网络性能测试工具 + +## 集成方式 ++ [应用hap包集成](docs/hap_integrate.md) diff --git a/thirdparty/iperf/SHA512SUM b/thirdparty/iperf/SHA512SUM new file mode 100644 index 00000000..a61d0f1c --- /dev/null +++ b/thirdparty/iperf/SHA512SUM @@ -0,0 +1 @@ +a90fbaddd73e5b721a84cee71cefb63391c13f64107f5785e954e7c44e9a8c5072e402b6fe45434966d3cc58ac97227c608ca9719161fc23459c5e5efcf8232b iperf-3.14.tar.gz diff --git a/thirdparty/iperf/docs/hap_integrate.md b/thirdparty/iperf/docs/hap_integrate.md new file mode 100755 index 00000000..ff03d52d --- /dev/null +++ b/thirdparty/iperf/docs/hap_integrate.md @@ -0,0 +1,91 @@ +# iperf 集成到应用hap + +本库是在RK3568开发板上基于OpenHarmony3.2 Release版本的镜像验证的,如果是从未使用过RK3568,可以先查看[润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld)。 + +## 开发环境 + +- ubuntu20.04 +- [OpenHarmony3.2Release镜像](https://gitee.com/link?target=https%3A%2F%2Frepo.huaweicloud.com%2Fopenharmony%2Fos%2F3.2-Release%2Fdayu200_standard_arm32.tar.gz) +- [ohos_sdk_public 4.0.8.1 (API Version 10 Release)](https://gitee.com/link?target=http%3A%2F%2Fdownload.ci.openharmony.cn%2Fversion%2FMaster_Version%2FOpenHarmony_4.0.8.1%2F20230608_091058%2Fversion-Master_Version-OpenHarmony_4.0.8.1-20230608_091058-ohos-sdk-public.tar.gz) +- [DevEco Studio 3.1 Release](https://gitee.com/link?target=https%3A%2F%2Fcontentcenter-vali-drcn.dbankcdn.cn%2Fpvt_2%2FDeveloperAlliance_package_901_9%2F81%2Fv3%2FtgRUB84wR72nTfE8Ir_xMw%2Fdevecostudio-windows-3.1.0.501.zip%3FHW-CC-KV%3DV1%26HW-CC-Date%3D20230621T074329Z%26HW-CC-Expire%3D315360000%26HW-CC-Sign%3D22F6787DF6093ECB4D4E08F9379B114280E1F65DA710599E48EA38CB24F3DBF2) +- [准备三方库构建环境](../../../lycium/README.md#编译环境准备) +- [准备三方库测试环境](../../../lycium/README.md#ci环境准备) + +## 编译三方库 + +- 下载本仓库 + + ``` + git clone https://gitee.com/openharmony-sig/tpc_c_cplusplus.git --depth=1 + ``` + +- 三方库目录结构 + + ```shell + tpc_c_cplusplus/thirdparty/iperf #三方库iperf的目录结构如下 + ├── docs #三方库相关文档的文件夹 + ├── HPKBUILD #构建脚本 + ├── HPKCHECK #自动化测试脚本 + ├── SHA512SUM #三方库校验文件 + ├── README.OpenSource #说明三方库源码的下载地址,版本,license等信息 + ├── README_zh.md + ``` + +- 在lycium目录下编译三方库 + 编译环境的搭建参考[准备三方库构建环境](../../../lycium/README.md#编译环境准备) + + ``` + cd lycium + ./build.sh iperf + ``` + + +- 三方库头文件及生成的库 + 在lycium目录下会生成usr目录,该目录下存在已编译完成的32位和64位三方库 + + ``` + iperf/arm64-v8a iperf/armeabi-v7a + ``` + +- [测试三方库](#测试三方库) + +## 应用中使用三方库 + +- 在IDE的cpp目录下新增thirdparty目录,将编译生成的库拷贝到该目录下,如下图所示 +   + + ![thirdparty_install_dir](pic/iperf_install_dir.png) + +- 在最外层(cpp目录下)CMakeLists.txt中添加如下语句 + + ```shell + #将三方库加入工程中 + target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/openssl/${OHOS_ARCH}/lib/libcrypto.a) + target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/openssl/${OHOS_ARCH}/lib/libssl.a) + target_link_libraries(entry PRIVATE -L${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/iperf/${OHOS_ARCH}/libiperf.so.0) + #将三方库的头文件加入工程中 + target_include_directories(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/openssl/${OHOS_ARCH}/include) + target_include_directories(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/iperf/${OHOS_ARCH}/include) + ``` + + ![iperf_usage](pic/iperf_usage.png) + +## 测试三方库 + +三方库的测试使用原库自带的测试用例来做测试,[准备三方库测试环境](../../../lycium/README.md#ci环境准备) + +进入到构建目录,执行如下命令 +``` +cd /src +make check +``` +(arm64-v8a-build为构建64位的目录,armeabi-v7a-build为构建32位的目录) + + ![iperf_test](pic/iperf_test.png) + +## 参考资料 + +- [润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld) +- [OpenHarmony三方库地址](https://gitee.com/openharmony-tpc) +- [OpenHarmony知识体系](https://gitee.com/openharmony-sig/knowledge) +- [通过DevEco Studio开发一个NAPI工程](https://gitee.com/openharmony-sig/knowledge_demo_temp/blob/master/docs/napi_study/docs/hello_napi.md) diff --git a/thirdparty/iperf/docs/pic/iperf_install_dir.png b/thirdparty/iperf/docs/pic/iperf_install_dir.png new file mode 100755 index 0000000000000000000000000000000000000000..a66737fb2678fc7c5fa46c3043131cc30bf73080 GIT binary patch literal 63275 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 KKbLh*2~7Zy=rsud literal 0 HcmV?d00001 diff --git a/thirdparty/iperf/docs/pic/iperf_test.png b/thirdparty/iperf/docs/pic/iperf_test.png new file mode 100755 index 0000000000000000000000000000000000000000..6aa071369e7331f2ec7865bbb25ff1cbdb374f72 GIT binary patch literal 30010 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�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 F{tdJcu*v`c literal 0 HcmV?d00001 -- Gitee From aa86a0731f4918841ac15596d955aaf0c3c6334f Mon Sep 17 00:00:00 2001 From: xucaiming <719260170@qq.com> Date: Mon, 31 Jul 2023 17:19:40 +0800 Subject: [PATCH 2/7] fix HPKBUILD file Signed-off-by: xucaiming <719260170@qq.com> --- thirdparty/iperf/HPKBUILD | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/thirdparty/iperf/HPKBUILD b/thirdparty/iperf/HPKBUILD index a30181f9..97f1bb6a 100644 --- a/thirdparty/iperf/HPKBUILD +++ b/thirdparty/iperf/HPKBUILD @@ -27,23 +27,24 @@ prepare() { then setarm32ENV host=arm-linux - fi - if [ $ARCH == "arm64-v8a" ] + elif [ $ARCH == "arm64-v8a" ] then setarm64ENV host=aarch64-linux + else + echo "${ARCH} not support" + return -1; fi cd $builddir cd $OLDPWD } build() { - cd $builddir/$ARCH-build ../configure "$@" --host=$host \ LDFLAGS="${LDFLAGS} -L${LYCIUM_ROOT}/usr/openssl/${ARCH}/lib" \ CFLAGS="${CFLAGS} -I${LYCIUM_ROOT}/usr/openssl/${ARCH}/include" > `pwd`/build.log 2>&1 - make -j4 >> `pwd`/build.log 2>&1 + make -j4 VERBOSE=1 >> `pwd`/build.log 2>&1 ret=$? cd $OLDPWD return $ret @@ -51,7 +52,7 @@ build() { package() { cd $builddir/$ARCH-build - make install >> `pwd`/build.log 2>&1 + make install VERBOSE=1 >> `pwd`/build.log 2>&1 cd $OLDPWD unset host } @@ -85,10 +86,12 @@ check() { if [ $ARCH == "armeabi-v7a" ] then unsetarm32ENV - fi - if [ $ARCH == "arm64-v8a" ] + elif [ $ARCH == "arm64-v8a" ] then unsetarm64ENV + else + echo "${ARCH} not support" + return -1; fi cd $OLDPWD -- Gitee From 773e09722198f4f254aa2ab81f18c28c83b6d945 Mon Sep 17 00:00:00 2001 From: xucaiming <719260170@qq.com> Date: Mon, 31 Jul 2023 18:49:17 +0800 Subject: [PATCH 3/7] fix iperf docs Signed-off-by: xucaiming <719260170@qq.com> --- thirdparty/iperf/docs/hap_integrate.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/thirdparty/iperf/docs/hap_integrate.md b/thirdparty/iperf/docs/hap_integrate.md index ff03d52d..72b24678 100755 --- a/thirdparty/iperf/docs/hap_integrate.md +++ b/thirdparty/iperf/docs/hap_integrate.md @@ -8,8 +8,8 @@ - [OpenHarmony3.2Release镜像](https://gitee.com/link?target=https%3A%2F%2Frepo.huaweicloud.com%2Fopenharmony%2Fos%2F3.2-Release%2Fdayu200_standard_arm32.tar.gz) - [ohos_sdk_public 4.0.8.1 (API Version 10 Release)](https://gitee.com/link?target=http%3A%2F%2Fdownload.ci.openharmony.cn%2Fversion%2FMaster_Version%2FOpenHarmony_4.0.8.1%2F20230608_091058%2Fversion-Master_Version-OpenHarmony_4.0.8.1-20230608_091058-ohos-sdk-public.tar.gz) - [DevEco Studio 3.1 Release](https://gitee.com/link?target=https%3A%2F%2Fcontentcenter-vali-drcn.dbankcdn.cn%2Fpvt_2%2FDeveloperAlliance_package_901_9%2F81%2Fv3%2FtgRUB84wR72nTfE8Ir_xMw%2Fdevecostudio-windows-3.1.0.501.zip%3FHW-CC-KV%3DV1%26HW-CC-Date%3D20230621T074329Z%26HW-CC-Expire%3D315360000%26HW-CC-Sign%3D22F6787DF6093ECB4D4E08F9379B114280E1F65DA710599E48EA38CB24F3DBF2) -- [准备三方库构建环境](../../../lycium/README.md#编译环境准备) -- [准备三方库测试环境](../../../lycium/README.md#ci环境准备) +- [准备三方库构建环境](../../../lycium/README.md#1编译环境准备) +- [准备三方库测试环境](../../../lycium/README.md#3ci环境准备) ## 编译三方库 @@ -32,7 +32,7 @@ ``` - 在lycium目录下编译三方库 - 编译环境的搭建参考[准备三方库构建环境](../../../lycium/README.md#编译环境准备) + 编译环境的搭建参考[准备三方库构建环境](../../../lycium/README.md#1编译环境准备) ``` cd lycium @@ -72,7 +72,7 @@ ## 测试三方库 -三方库的测试使用原库自带的测试用例来做测试,[准备三方库测试环境](../../../lycium/README.md#ci环境准备) +三方库的测试使用原库自带的测试用例来做测试,[准备三方库测试环境](../../../lycium/README.md#3ci环境准备) 进入到构建目录,执行如下命令 ``` -- Gitee From be090ce77455ecbc1e96b2b1bf044ebdec80b91a Mon Sep 17 00:00:00 2001 From: xucaiming <719260170@qq.com> Date: Wed, 2 Aug 2023 12:38:39 +0800 Subject: [PATCH 4/7] modify the iperf license link Signed-off-by: xucaiming <719260170@qq.com> --- thirdparty/iperf/README.OpenSource | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/thirdparty/iperf/README.OpenSource b/thirdparty/iperf/README.OpenSource index ac15a7b8..85b18b02 100755 --- a/thirdparty/iperf/README.OpenSource +++ b/thirdparty/iperf/README.OpenSource @@ -2,7 +2,7 @@ { "Name": "iperf", "License": " BSD-3-Clause license", - "License File": "LICENSES", + "License File": "https://github.com/esnet/iperf/blob/master/LICENSE", "Version Number": "3.14", "Owner": "cmxud@isoftstone.com", "Upstream URL": "https://github.com/esnet/iperf/archive/refs/tags/3.14.tar.gz", -- Gitee From 9c0c259aaa1dabea4282c79b98bd97c393438949 Mon Sep 17 00:00:00 2001 From: xucaiming <719260170@qq.com> Date: Wed, 2 Aug 2023 16:57:32 +0800 Subject: [PATCH 5/7] fix hap_integrate.md docs Signed-off-by: xucaiming <719260170@qq.com> --- thirdparty/iperf/docs/hap_integrate.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/thirdparty/iperf/docs/hap_integrate.md b/thirdparty/iperf/docs/hap_integrate.md index 72b24678..8009798f 100755 --- a/thirdparty/iperf/docs/hap_integrate.md +++ b/thirdparty/iperf/docs/hap_integrate.md @@ -27,8 +27,9 @@ ├── HPKBUILD #构建脚本 ├── HPKCHECK #自动化测试脚本 ├── SHA512SUM #三方库校验文件 + ├── OAT.xml #OAT开源审查文本 ├── README.OpenSource #说明三方库源码的下载地址,版本,license等信息 - ├── README_zh.md + ├── README_zh.md ``` - 在lycium目录下编译三方库 -- Gitee From 31e7ec614c1518f60c03fab49730b65f83fecf65 Mon Sep 17 00:00:00 2001 From: xucaiming <719260170@qq.com> Date: Thu, 3 Aug 2023 10:47:22 +0800 Subject: [PATCH 6/7] fix iperf docs Signed-off-by: xucaiming <719260170@qq.com> --- thirdparty/iperf/docs/hap_integrate.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/thirdparty/iperf/docs/hap_integrate.md b/thirdparty/iperf/docs/hap_integrate.md index 8009798f..40e9f85d 100755 --- a/thirdparty/iperf/docs/hap_integrate.md +++ b/thirdparty/iperf/docs/hap_integrate.md @@ -52,7 +52,9 @@ ## 应用中使用三方库 -- 在IDE的cpp目录下新增thirdparty目录,将编译生成的库拷贝到该目录下,如下图所示 +- 在IDE的cpp目录下新增thirdparty目录,将编译生成的库拷贝到该目录下 + 在IDE的libs目录下新增iperf目录,在iperf目录下新增arm64-v8a目录和armeabi-v7a目录, + 分别将,iperf库编译生成的64位和32位的so文件放到该目录下,如下图所示   ![thirdparty_install_dir](pic/iperf_install_dir.png) -- Gitee From 2e718190bacc3a6f2a0d8546cc65fd7e8fede4f5 Mon Sep 17 00:00:00 2001 From: xucaiming <719260170@qq.com> Date: Thu, 3 Aug 2023 11:36:20 +0800 Subject: [PATCH 7/7] modify iperf HPKBUILD Signed-off-by: xucaiming <719260170@qq.com> --- thirdparty/iperf/HPKBUILD | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/thirdparty/iperf/HPKBUILD b/thirdparty/iperf/HPKBUILD index 97f1bb6a..7359f37e 100644 --- a/thirdparty/iperf/HPKBUILD +++ b/thirdparty/iperf/HPKBUILD @@ -35,15 +35,11 @@ prepare() { echo "${ARCH} not support" return -1; fi - cd $builddir - cd $OLDPWD } build() { cd $builddir/$ARCH-build - ../configure "$@" --host=$host \ - LDFLAGS="${LDFLAGS} -L${LYCIUM_ROOT}/usr/openssl/${ARCH}/lib" \ - CFLAGS="${CFLAGS} -I${LYCIUM_ROOT}/usr/openssl/${ARCH}/include" > `pwd`/build.log 2>&1 + PKG_CONFIG_LIBDIR="${pkgconfigpath}" ../configure "$@" --host=$host > `pwd`/build.log 2>&1 make -j4 VERBOSE=1 >> `pwd`/build.log 2>&1 ret=$? cd $OLDPWD -- Gitee