From 230da160acd499cbc4775aa5e50f8a68fe7888a0 Mon Sep 17 00:00:00 2001 From: Ophir LOJKINE Date: Tue, 22 Mar 2022 17:15:30 +0100 Subject: [PATCH 1/3] dependencies update to prevent duplicated dependencies (#178) See #177 --- Cargo.lock | 400 ++++++++++++++++++++++++++-------------------- crypto/Cargo.toml | 2 +- server/Cargo.toml | 2 +- 3 files changed, 233 insertions(+), 171 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b01246846..d6cd14dea 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -233,21 +233,24 @@ dependencies = [ [[package]] name = "autocfg" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" +checksum = "0dde43e75fd43e8a1bf86103336bc699aa8d17ad1be60c76c0bdfd4828e19b78" +dependencies = [ + "autocfg 1.1.0", +] [[package]] name = "autocfg" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "backtrace" -version = "0.3.63" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "321629d8ba6513061f26707241fa9bc89524ff1cd7a915a97ef0c62c666ce1b6" +checksum = "5e121dee8023ce33ab248d9ce1493df03c3b38a659b240096fcbd7048ff9c31f" dependencies = [ "addr2line", "cc", @@ -369,9 +372,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.72" +version = "1.0.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22a9137b95ea06864e018375b72adfb7db6e6f68cfc8df5a04d00288050485ee" +checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" [[package]] name = "cfg-if" @@ -439,16 +442,16 @@ dependencies = [ "hkdf", "hmac", "percent-encoding 2.1.0", - "rand 0.8.4", + "rand 0.8.5", "sha2", "time", ] [[package]] name = "core-foundation" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6888e10551bb93e424d8df1d07f1a8b4fceb0001a3a4b048bfc47554946f47b3" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" dependencies = [ "core-foundation-sys", "libc", @@ -462,9 +465,9 @@ checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" [[package]] name = "cpufeatures" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95059428f66df56b63431fdb4e1947ed2190586af5c5a8a8b71122bdf5a7f469" +checksum = "59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b" dependencies = [ "libc", ] @@ -477,9 +480,9 @@ checksum = "dcb25d077389e53838a8158c8e99174c5a9d902dee4904320db714f3c653ffba" [[package]] name = "crc32fast" -version = "1.3.0" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "738c290dfaea84fc1ca15ad9c168d083b05a714e1efddd8edaab678dc28d2836" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" dependencies = [ "cfg-if 1.0.0", ] @@ -533,12 +536,12 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.2" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e54ea8bc3fb1ee042f5aace6e3c6e025d3874866da222930f70ce62aceba0bfa" +checksum = "5aaa7bd5fb665c6864b5f963dd9097905c54125909c7aa94c9e18507cdbe6c53" dependencies = [ "cfg-if 1.0.0", - "crossbeam-utils 0.8.6", + "crossbeam-utils 0.8.8", ] [[package]] @@ -559,8 +562,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e" dependencies = [ "cfg-if 1.0.0", - "crossbeam-epoch 0.9.6", - "crossbeam-utils 0.8.6", + "crossbeam-epoch 0.9.8", + "crossbeam-utils 0.8.8", ] [[package]] @@ -569,7 +572,7 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" dependencies = [ - "autocfg 1.0.1", + "autocfg 1.1.0", "cfg-if 0.1.10", "crossbeam-utils 0.7.2", "lazy_static", @@ -580,12 +583,13 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.6" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97242a70df9b89a65d0b6df3c4bf5b9ce03c5b7309019777fbde37e7537f8762" +checksum = "1145cf131a2c6ba0615079ab6a638f7e1973ac9c2634fcbeaaad6114246efe8c" dependencies = [ + "autocfg 1.1.0", "cfg-if 1.0.0", - "crossbeam-utils 0.8.6", + "crossbeam-utils 0.8.8", "lazy_static", "memoffset 0.6.5", "scopeguard 1.1.0", @@ -618,16 +622,16 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" dependencies = [ - "autocfg 1.0.1", + "autocfg 1.1.0", "cfg-if 0.1.10", "lazy_static", ] [[package]] name = "crossbeam-utils" -version = "0.8.6" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcae03edb34f947e64acdb1c33ec169824e20657e9ecb61cef6c8c74dcb8120" +checksum = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38" dependencies = [ "cfg-if 1.0.0", "lazy_static", @@ -676,13 +680,13 @@ dependencies = [ [[package]] name = "derivative" -version = "1.0.4" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c6d883546668a3e2011b6a716a7330b82eabb0151b138217f632c8243e17135" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" dependencies = [ - "proc-macro2 0.4.30", - "quote 0.6.13", - "syn 0.15.44", + "proc-macro2 1.0.36", + "quote 1.0.16", + "syn 1.0.89", ] [[package]] @@ -821,16 +825,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" dependencies = [ "proc-macro2 1.0.36", - "quote 1.0.14", - "syn 1.0.85", + "quote 1.0.16", + "syn 1.0.89", "synstructure", ] [[package]] name = "fastrand" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "779d043b6a0b90cc4c0ed7ee380a6504394cee7efd7db050e3774eee387324b2" +checksum = "c3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdf" dependencies = [ "instant", ] @@ -899,9 +903,9 @@ checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678" [[package]] name = "futures" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28560757fe2bb34e79f907794bb6b22ae8b0e5c669b638a1132f2592b19035b4" +checksum = "f73fe65f54d1e12b726f517d3e2135ca3125a437b6d998caf1962961f7172d9e" dependencies = [ "futures-channel", "futures-core", @@ -914,9 +918,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3dda0b6588335f360afc675d0564c17a77a2bda81ca178a4b6081bd86c7f0b" +checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010" dependencies = [ "futures-core", "futures-sink", @@ -924,9 +928,9 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0c8ff0461b82559810cdccfde3215c3f373807f5e5232b71479bff7bb2583d7" +checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3" [[package]] name = "futures-cpupool" @@ -940,9 +944,9 @@ dependencies = [ [[package]] name = "futures-executor" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29d6d2ff5bb10fb95c85b8ce46538a2e5f5e7fdc755623a7d4529ab8a4ed9d2a" +checksum = "9420b90cfa29e327d0429f19be13e7ddb68fa1cccb09d65e5706b8c7a749b8a6" dependencies = [ "futures-core", "futures-task", @@ -951,38 +955,38 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f9d34af5a1aac6fb380f735fe510746c38067c5bf16c7fd250280503c971b2" +checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b" [[package]] name = "futures-macro" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbd947adfffb0efc70599b3ddcf7b5597bb5fa9e245eb99f62b3a5f7bb8bd3c" +checksum = "33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512" dependencies = [ "proc-macro2 1.0.36", - "quote 1.0.14", - "syn 1.0.85", + "quote 1.0.16", + "syn 1.0.89", ] [[package]] name = "futures-sink" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3055baccb68d74ff6480350f8d6eb8fcfa3aa11bdc1a1ae3afdd0514617d508" +checksum = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868" [[package]] name = "futures-task" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ee7c6485c30167ce4dfb83ac568a849fe53274c831081476ee13e0dce1aad72" +checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a" [[package]] name = "futures-util" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b5cf40b47a271f77a8b1bec03ca09044d99d2372c0de244e66430761127164" +checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a" dependencies = [ "futures-channel", "futures-core", @@ -1008,9 +1012,9 @@ dependencies = [ [[package]] name = "gethostname" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e692e296bfac1d2533ef168d0b60ff5897b8b70a4009276834014dd8924cc028" +checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" dependencies = [ "libc", "winapi 0.3.9", @@ -1029,9 +1033,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.3" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" +checksum = "d39cd93900197114fa1fcb7ae84ca742095eed9442088988ae74fa744e930e77" dependencies = [ "cfg-if 1.0.0", "libc", @@ -1131,9 +1135,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.5.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acd94fdbe1d4ff688b67b04eee2e17bd50995534a61539e45adfefb45e5e5503" +checksum = "9100414882e15fb7feccb4897e5f0ff0ff1ca7d1a86a23208ada4d7a18e6c6c4" [[package]] name = "humantime" @@ -1161,7 +1165,7 @@ version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282a6247722caba404c065016bbfa522806e51714c34f5dfc3e4a3a46fcb4223" dependencies = [ - "autocfg 1.0.1", + "autocfg 1.1.0", "hashbrown", ] @@ -1190,7 +1194,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08f7eadeaf4b52700de180d147c4805f199854600b36faa963d91114827b2ffc" dependencies = [ "error-chain", - "socket2", + "socket2 0.3.19", "widestring", "winapi 0.3.9", "winreg", @@ -1262,9 +1266,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.112" +version = "0.2.121" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b03d17f364a3a042d5e5d46b053bbbf82c92c9430c592dd4c064dc6ee997125" +checksum = "efaa7b300f3b5fe8eb6bf21ce3895e1751d9665086af2d64b42f19701015ff4f" [[package]] name = "linked-hash-map" @@ -1293,9 +1297,9 @@ dependencies = [ [[package]] name = "lock_api" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712a4d093c9976e24e7dbca41db895dabcbac38eb5f4045393d17a95bdfb1109" +checksum = "88943dd7ef4a2e5a4bfa2753aaab3013e34ce2533d1996fb18ef591e315e2b3b" dependencies = [ "scopeguard 1.1.0", ] @@ -1389,7 +1393,7 @@ version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa" dependencies = [ - "autocfg 1.0.1", + "autocfg 1.1.0", ] [[package]] @@ -1398,7 +1402,7 @@ version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" dependencies = [ - "autocfg 1.0.1", + "autocfg 1.1.0", ] [[package]] @@ -1409,9 +1413,9 @@ checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" [[package]] name = "mime_guess" -version = "2.0.3" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2684d4c2e97d99848d30b324b00c8fcc7e5c897b7cbb5819b09e7c90e8baf212" +checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" dependencies = [ "mime", "unicase", @@ -1434,7 +1438,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" dependencies = [ "adler", - "autocfg 1.0.1", + "autocfg 1.1.0", ] [[package]] @@ -1458,14 +1462,15 @@ dependencies = [ [[package]] name = "mio" -version = "0.7.14" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8067b404fe97c70829f082dec8bcf4f71225d7eaea1d8645349cb76fa06205cc" +checksum = "52da4364ffb0e4fe33a9841a98a3f3014fb964045ce4f7a45a398243c8d6b0c9" dependencies = [ "libc", "log 0.4.14", "miow 0.3.7", "ntapi", + "wasi 0.11.0+wasi-snapshot-preview1", "winapi 0.3.9", ] @@ -1552,9 +1557,9 @@ dependencies = [ [[package]] name = "ntapi" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44" +checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f" dependencies = [ "winapi 0.3.9", ] @@ -1565,7 +1570,7 @@ version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" dependencies = [ - "autocfg 1.0.1", + "autocfg 1.1.0", "num-traits", ] @@ -1575,7 +1580,7 @@ version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" dependencies = [ - "autocfg 1.0.1", + "autocfg 1.1.0", ] [[package]] @@ -1599,9 +1604,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da32515d9f6e6e489d7bc9d84c71b060db7247dc035bbe44eac88cf87486d8d5" +checksum = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9" [[package]] name = "opaque-debug" @@ -1630,7 +1635,7 @@ name = "opcua-client" version = "0.10.0" dependencies = [ "chrono", - "futures 0.3.19", + "futures 0.3.21", "lazy_static", "log 0.4.14", "opcua-core", @@ -1638,7 +1643,7 @@ dependencies = [ "opcua-types", "serde", "serde_derive", - "tokio 1.15.0", + "tokio 1.17.0", "tokio-util", ] @@ -1658,7 +1663,7 @@ version = "0.10.0" dependencies = [ "bytes 1.1.0", "chrono", - "futures 0.3.19", + "futures 0.3.21", "lazy_static", "log 0.4.14", "opcua-crypto", @@ -1669,7 +1674,7 @@ dependencies = [ "serde_derive", "serde_yaml", "tempdir", - "tokio 1.15.0", + "tokio 1.17.0", "tokio-util", "url", ] @@ -1678,7 +1683,7 @@ dependencies = [ name = "opcua-crypto" version = "0.10.0" dependencies = [ - "bytes 0.4.12", + "bytes 1.1.0", "chrono", "foreign-types", "gethostname", @@ -1777,7 +1782,7 @@ dependencies = [ "chrono", "criterion", "derivative", - "futures 0.3.19", + "futures 0.3.21", "lazy_static", "log 0.4.14", "opcua-client", @@ -1790,7 +1795,7 @@ dependencies = [ "serde_derive", "serde_json", "time", - "tokio 1.15.0", + "tokio 1.17.0", "tokio-util", ] @@ -1843,7 +1848,7 @@ dependencies = [ "serde", "serde_derive", "serde_json", - "tokio 1.15.0", + "tokio 1.17.0", ] [[package]] @@ -1862,15 +1867,15 @@ dependencies = [ [[package]] name = "openssl-probe" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-src" -version = "111.17.0+1.1.1m" +version = "111.18.0+1.1.1n" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05d6a336abd10814198f66e2a91ccd7336611f30334119ca8ce300536666fcf4" +checksum = "7897a926e1e8d00219127dc020130eca4292e5ca666dd592480d72c3eca2ff6c" dependencies = [ "cc", ] @@ -1881,7 +1886,7 @@ version = "0.9.72" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7e46109c383602735fa0a2e48dd2b7c892b048e1bf69e5c3b1d804b7d9c203cb" dependencies = [ - "autocfg 1.0.1", + "autocfg 1.1.0", "cc", "libc", "openssl-src", @@ -1930,13 +1935,12 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.11.2" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +checksum = "87f5ec2493a61ac0506c0f4199f99070cbe83857b0337006a30f3e6719b8ef58" dependencies = [ - "instant", - "lock_api 0.4.5", - "parking_lot_core 0.8.5", + "lock_api 0.4.6", + "parking_lot_core 0.9.1", ] [[package]] @@ -1969,16 +1973,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.8.5" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" +checksum = "28141e0cc4143da2443301914478dc976a61ffdb3f043058310c70df2fed8954" dependencies = [ "cfg-if 1.0.0", - "instant", "libc", - "redox_syscall 0.2.10", - "smallvec 1.7.0", - "winapi 0.3.9", + "redox_syscall 0.2.11", + "smallvec 1.8.0", + "windows-sys", ] [[package]] @@ -2081,9 +2084,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.14" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47aa80447ce4daf1717500037052af176af5d38cc3e571d9ec1c7353fc10c87d" +checksum = "b4af2ec4714533fcdf07e886f17025ace8b997b9ce51204ee69b6da831c3da57" dependencies = [ "proc-macro2 1.0.36", ] @@ -2130,7 +2133,7 @@ version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" dependencies = [ - "autocfg 0.1.7", + "autocfg 0.1.8", "libc", "rand_chacha 0.1.1", "rand_core 0.4.2", @@ -2158,14 +2161,13 @@ dependencies = [ [[package]] name = "rand" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", "rand_chacha 0.3.1", "rand_core 0.6.3", - "rand_hc 0.3.1", ] [[package]] @@ -2174,7 +2176,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" dependencies = [ - "autocfg 0.1.7", + "autocfg 0.1.8", "rand_core 0.3.1", ] @@ -2228,7 +2230,7 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" dependencies = [ - "getrandom 0.2.3", + "getrandom 0.2.5", ] [[package]] @@ -2249,15 +2251,6 @@ dependencies = [ "rand_core 0.5.1", ] -[[package]] -name = "rand_hc" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7" -dependencies = [ - "rand_core 0.6.3", -] - [[package]] name = "rand_isaac" version = "0.1.1" @@ -2298,7 +2291,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" dependencies = [ - "autocfg 0.1.7", + "autocfg 0.1.8", "rand_core 0.4.2", ] @@ -2327,7 +2320,7 @@ version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90" dependencies = [ - "autocfg 1.0.1", + "autocfg 1.1.0", "crossbeam-deque 0.8.1", "either", "rayon-core", @@ -2339,9 +2332,9 @@ version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e" dependencies = [ - "crossbeam-channel 0.5.2", + "crossbeam-channel 0.5.4", "crossbeam-deque 0.8.1", - "crossbeam-utils 0.8.6", + "crossbeam-utils 0.8.8", "lazy_static", "num_cpus", ] @@ -2363,18 +2356,18 @@ checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" [[package]] name = "redox_syscall" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff" +checksum = "8380fe0152551244f0747b1bf41737e0f8a74f97a14ccefd1148187271634f3c" dependencies = [ "bitflags", ] [[package]] name = "regex" -version = "1.5.4" +version = "1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461" +checksum = "1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286" dependencies = [ "aho-corasick", "memchr", @@ -2477,7 +2470,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.4", + "semver 1.0.6", ] [[package]] @@ -2555,9 +2548,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.4.2" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "525bc1abfda2e1998d152c45cf13e696f76d0a4972310b22fac1658b05df7c87" +checksum = "2dc14f172faf8a0194a3aded622712b0de276821addc574fa54fc0a1167e10dc" dependencies = [ "bitflags", "core-foundation", @@ -2568,9 +2561,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.4.2" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9dd14d83160b528b7bfd66439110573efcfbe281b17fc2ca9f39f550d619c7e" +checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" dependencies = [ "core-foundation-sys", "libc", @@ -2587,9 +2580,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.4" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "568a8e6258aa33c13358f81fd834adb854c6f7c9468520910a9b1e8fac068012" +checksum = "a4a3381e03edd24287172047536f20cabde766e2cd3e65e6b00fb3af51c4f38d" [[package]] name = "semver-parser" @@ -2599,9 +2592,9 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.133" +version = "1.0.136" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97565067517b60e2d1ea8b268e59ce036de907ac523ad83a0475da04e818989a" +checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789" [[package]] name = "serde-value" @@ -2615,20 +2608,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.133" +version = "1.0.136" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed201699328568d8d08208fdd080e3ff594e6c422e438b6705905da01005d537" +checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9" dependencies = [ "proc-macro2 1.0.36", - "quote 1.0.14", - "syn 1.0.85", + "quote 1.0.16", + "syn 1.0.89", ] [[package]] name = "serde_json" -version = "1.0.74" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee2bb9cd061c5865d345bb02ca49fcef1391741b672b54a0bf7b679badec3142" +checksum = "8e8d9fa5c3b304765ce1fd9c4c8a3de2c8db365a5b91be52f186efc675681d95" dependencies = [ "itoa 1.0.1", "ryu", @@ -2661,9 +2654,18 @@ dependencies = [ [[package]] name = "sha1" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" +checksum = "c1da05c97445caa12d05e848c4a4fcbbea29e748ac28f7e80e9b010392063770" +dependencies = [ + "sha1_smol", +] + +[[package]] +name = "sha1_smol" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" [[package]] name = "sha2" @@ -2716,9 +2718,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ecab6c735a6bb4139c0caafd0cc3635748bbb3acf4550e8138122099251f309" +checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83" [[package]] name = "socket2" @@ -2731,6 +2733,16 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "socket2" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0" +dependencies = [ + "libc", + "winapi 0.3.9", +] + [[package]] name = "stable_deref_trait" version = "1.2.0" @@ -2765,12 +2777,12 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.85" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a684ac3dcd8913827e18cd09a68384ee66c1de24157e3c556c9ab16d85695fb7" +checksum = "ea297be220d52398dcc07ce15a209fce436d361735ac1db700cab3b6cdfb9f54" dependencies = [ "proc-macro2 1.0.36", - "quote 1.0.14", + "quote 1.0.16", "unicode-xid 0.2.2", ] @@ -2781,8 +2793,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ "proc-macro2 1.0.36", - "quote 1.0.14", - "syn 1.0.85", + "quote 1.0.16", + "syn 1.0.89", "unicode-xid 0.2.2", ] @@ -2811,16 +2823,16 @@ dependencies = [ "cfg-if 1.0.0", "fastrand", "libc", - "redox_syscall 0.2.10", + "redox_syscall 0.2.11", "remove_dir_all", "winapi 0.3.9", ] [[package]] name = "termcolor" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4" +checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" dependencies = [ "winapi-util", ] @@ -2906,19 +2918,20 @@ dependencies = [ [[package]] name = "tokio" -version = "1.15.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbbf1c778ec206785635ce8ad57fe52b3009ae9e0c9f574a728f3049d3e55838" +checksum = "2af73ac49756f3f7c01172e34a23e5d0216f6c32333757c2c61feb2bbff5a5ee" dependencies = [ "bytes 1.1.0", "libc", "memchr", - "mio 0.7.14", + "mio 0.8.2", "num_cpus", "once_cell", - "parking_lot 0.11.2", + "parking_lot 0.12.0", "pin-project-lite", "signal-hook-registry", + "socket2 0.4.4", "tokio-macros", "winapi 0.3.9", ] @@ -3002,8 +3015,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b557f72f448c511a979e2564e55d74e6c4432fc96ff4f6241bc6bded342643b7" dependencies = [ "proc-macro2 1.0.36", - "quote 1.0.14", - "syn 1.0.85", + "quote 1.0.16", + "syn 1.0.89", ] [[package]] @@ -3207,7 +3220,7 @@ dependencies = [ "futures-sink", "log 0.4.14", "pin-project-lite", - "tokio 1.15.0", + "tokio 1.17.0", ] [[package]] @@ -3239,7 +3252,7 @@ dependencies = [ "log 0.4.14", "rand 0.5.6", "smallvec 0.6.14", - "socket2", + "socket2 0.3.19", "tokio-executor", "tokio-io", "tokio-reactor", @@ -3263,7 +3276,7 @@ dependencies = [ "log 0.4.14", "rand 0.5.6", "smallvec 0.6.14", - "socket2", + "socket2 0.3.19", "tokio-executor", "tokio-io", "tokio-reactor", @@ -3410,7 +3423,7 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" dependencies = [ - "getrandom 0.2.3", + "getrandom 0.2.5", ] [[package]] @@ -3430,8 +3443,8 @@ checksum = "c2ca2a14bc3fc5b64d188b087a7d3a927df87b152e941ccfbc66672e20c467ae" dependencies = [ "nom", "proc-macro2 1.0.36", - "quote 1.0.14", - "syn 1.0.85", + "quote 1.0.16", + "syn 1.0.89", ] [[package]] @@ -3485,6 +3498,12 @@ version = "0.10.2+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + [[package]] name = "webpki" version = "0.18.1" @@ -3544,6 +3563,49 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows-sys" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3df6e476185f92a12c072be4a189a0210dcdcf512a1891d6dff9edb874deadc6" +dependencies = [ + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_msvc" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8e92753b1c443191654ec532f14c199742964a061be25d77d7a96f09db20bf5" + +[[package]] +name = "windows_i686_gnu" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a711c68811799e017b6038e0922cb27a5e2f43a2ddb609fe0b6f3eeda9de615" + +[[package]] +name = "windows_i686_msvc" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "146c11bb1a02615db74680b32a68e2d61f553cc24c4eb5b4ca10311740e44172" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c912b12f7454c6620635bbff3450962753834be2a594819bd5e945af18ec64bc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "504a2476202769977a040c6364301a3f65d0cc9e3fb08600b2bda150a0488316" + [[package]] name = "winreg" version = "0.5.1" diff --git a/crypto/Cargo.toml b/crypto/Cargo.toml index a93db0ef7..705648d85 100644 --- a/crypto/Cargo.toml +++ b/crypto/Cargo.toml @@ -25,7 +25,7 @@ chrono = "0.4" openssl = "0.10" openssl-sys = "0.9" lazy_static = "1.4.0" -bytes = "0.4" +bytes = "1.1" serde = "1.0" serde_derive = "1.0" gethostname = "0.2.1" diff --git a/server/Cargo.toml b/server/Cargo.toml index eebdb4ebe..8aefb8ad6 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -41,7 +41,7 @@ tokio = { version = "1", features = ["full"] } tokio-util = { version = "0.6", features = ["codec"] } futures = "0.3" bitflags = "1.2" -derivative = "1.0" +derivative = "2.2" regex = "1.3" [dev-dependencies] From fe3a3fcb969fd657d056ebb86ac484b869d6acbf Mon Sep 17 00:00:00 2001 From: Adam Lock Date: Tue, 29 Mar 2022 12:38:35 +0100 Subject: [PATCH 2/3] Fix wrong callback for method in demo server --- samples/demo-server/src/methods.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/demo-server/src/methods.rs b/samples/demo-server/src/methods.rs index 89cc757f3..cce971db8 100644 --- a/samples/demo-server/src/methods.rs +++ b/samples/demo-server/src/methods.rs @@ -52,7 +52,7 @@ pub fn add_methods(server: &mut Server, ns: u16) { MethodBuilder::new(&fn_node_id, "Boop", "Boop") .component_of(object_id.clone()) .input_args(&mut address_space, &[("Ping", DataTypeId::String).into()]) - .callback(Box::new(HelloX)) + .callback(Box::new(Boop)) .insert(&mut address_space); } From 5d5bafd00c5ce113fa6d439faf6a2ebd4b31ed04 Mon Sep 17 00:00:00 2001 From: Adam Lock Date: Tue, 29 Mar 2022 13:55:29 +0100 Subject: [PATCH 3/3] Add an integration test that calls a method on a server from a client. --- integration/src/harness.rs | 86 ++++++++++++-- integration/src/tests.rs | 229 +++++++++++++++++++++++-------------- 2 files changed, 218 insertions(+), 97 deletions(-) diff --git a/integration/src/harness.rs b/integration/src/harness.rs index 763e62485..a9979d820 100644 --- a/integration/src/harness.rs +++ b/integration/src/harness.rs @@ -15,12 +15,23 @@ use log::*; use opcua_client::prelude::*; use opcua_console_logging; use opcua_core::{self, runtime_components}; -use opcua_server::{self, builder::ServerBuilder, config::ServerEndpoint, prelude::*}; +use opcua_server::{ + self, builder::ServerBuilder, callbacks, config::ServerEndpoint, prelude::*, + session::SessionManager, +}; use crate::*; const TEST_TIMEOUT: i64 = 30000; +pub fn functions_object_id() -> NodeId { + NodeId::new(2, "Functions") +} + +pub fn hellox_method_id() -> NodeId { + NodeId::new(2, "HelloX") +} + static NEXT_PORT_OFFSET: AtomicUsize = AtomicUsize::new(0); pub fn next_port() -> u16 { @@ -46,9 +57,9 @@ fn port_from_offset(port_offset: u16) -> u16 { 4855u16 + port_offset } -pub fn endpoint_url(port: u16, path: &str) -> String { +pub fn endpoint_url(port: u16, path: &str) -> UAString { // To avoid certificate trouble, use the computer's own name for tne endpoint - format!("opc.tcp://{}:{}{}", hostname(), port, path) + format!("opc.tcp://{}:{}{}", hostname(), port, path).into() } fn v1_node_id() -> NodeId { @@ -103,7 +114,7 @@ pub fn new_server(port: u16) -> Server { let server = ServerBuilder::new() .application_name("integration_server") .application_uri("urn:integration_server") - .discovery_urls(vec![endpoint_url(port, endpoint_path)]) + .discovery_urls(vec![endpoint_url(port, endpoint_path).to_string()]) .create_sample_keypair(true) .pki_dir("./pki-server") .discovery_server_url(None) @@ -254,11 +265,72 @@ pub fn new_server(port: u16) -> Server { .organized_by(&folder_id) .insert(&mut address_space); }); + + let functions_object_id = functions_object_id(); + ObjectBuilder::new(&functions_object_id, "Functions", "Functions") + .event_notifier(EventNotifier::SUBSCRIBE_TO_EVENTS) + .organized_by(ObjectId::ObjectsFolder) + .insert(&mut address_space); + + MethodBuilder::new(&hellox_method_id(), "HelloX", "HelloX") + .component_of(functions_object_id) + .input_args( + &mut address_space, + &[("YourName", DataTypeId::String).into()], + ) + .output_args(&mut address_space, &[("Result", DataTypeId::String).into()]) + .callback(Box::new(HelloX)) + .insert(&mut address_space); } server } +struct HelloX; + +impl callbacks::Method for HelloX { + fn call( + &mut self, + _session_id: &NodeId, + _session_map: Arc>, + request: &CallMethodRequest, + ) -> Result { + debug!("HelloX method called"); + // Validate input to be a string + let mut out1 = Variant::Empty; + let in1_status = if let Some(ref input_arguments) = request.input_arguments { + if let Some(in1) = input_arguments.get(0) { + if let Variant::String(in1) = in1 { + out1 = Variant::from(format!("Hello {}!", &in1)); + StatusCode::Good + } else { + StatusCode::BadTypeMismatch + } + } else if input_arguments.len() == 0 { + return Err(StatusCode::BadArgumentsMissing); + } else { + // Shouldn't get here because there is 1 argument + return Err(StatusCode::BadTooManyArguments); + } + } else { + return Err(StatusCode::BadArgumentsMissing); + }; + + let status_code = if in1_status.is_good() { + StatusCode::Good + } else { + StatusCode::BadInvalidArgument + }; + + Ok(CallMethodResult { + status_code, + input_argument_results: Some(vec![in1_status]), + input_argument_diagnostic_infos: None, + output_arguments: Some(vec![out1]), + }) + } +} + fn new_client(_port: u16) -> Client { ClientBuilder::new() .application_name("integration_client") @@ -599,7 +671,7 @@ pub fn connect_with_get_endpoints(port: u16) { port, move |rx_client_command: mpsc::Receiver, client: Client| { get_endpoints_client_test( - &endpoint_url(port, "/"), + &endpoint_url(port, "/").as_ref(), IdentityToken::Anonymous, rx_client_command, client, @@ -613,8 +685,6 @@ pub fn connect_with_invalid_token( mut client_endpoint: EndpointDescription, identity_token: IdentityToken, ) { - client_endpoint.endpoint_url = - UAString::from(endpoint_url(port, client_endpoint.endpoint_url.as_ref())); connect_with_client_test( port, move |rx_client_command: mpsc::Receiver, client: Client| { @@ -628,8 +698,6 @@ pub fn connect_with( mut client_endpoint: EndpointDescription, identity_token: IdentityToken, ) { - client_endpoint.endpoint_url = - UAString::from(endpoint_url(port, client_endpoint.endpoint_url.as_ref())); connect_with_client_test( port, move |rx_client_command: mpsc::Receiver, client: Client| { diff --git a/integration/src/tests.rs b/integration/src/tests.rs index 4a5955edb..0429949a6 100644 --- a/integration/src/tests.rs +++ b/integration/src/tests.rs @@ -1,112 +1,120 @@ +use std::{ + sync::{mpsc, mpsc::channel, Arc, RwLock}, + thread, +}; + use chrono::Utc; use log::*; use opcua_client::prelude::*; use opcua_console_logging; use opcua_server::{self, prelude::*}; -use std::{ - sync::{mpsc, mpsc::channel, Arc, RwLock}, - thread, -}; use crate::harness::*; -fn endpoint_none() -> EndpointDescription { - ( - "/", - SecurityPolicy::None.to_str(), - MessageSecurityMode::None, - ) - .into() +fn endpoint( + port: u16, + path: &str, + security_policy: SecurityPolicy, + message_security_mode: MessageSecurityMode, +) -> EndpointDescription { + let mut endpoint = + EndpointDescription::from(("", SecurityPolicy::None.to_str(), MessageSecurityMode::None)); + endpoint.endpoint_url = endpoint_url(port, path); + endpoint +} + +fn endpoint_none(port: u16) -> EndpointDescription { + endpoint(port, "/", SecurityPolicy::None, MessageSecurityMode::None) } -fn endpoint_basic128rsa15_sign() -> EndpointDescription { - ( +fn endpoint_basic128rsa15_sign(port: u16) -> EndpointDescription { + endpoint( + port, "/", - SecurityPolicy::Basic128Rsa15.to_str(), + SecurityPolicy::Basic128Rsa15, MessageSecurityMode::Sign, ) - .into() } -fn endpoint_basic128rsa15_sign_encrypt() -> EndpointDescription { - ( +fn endpoint_basic128rsa15_sign_encrypt(port: u16) -> EndpointDescription { + endpoint( + port, "/", - SecurityPolicy::Basic128Rsa15.to_str(), + SecurityPolicy::Basic128Rsa15, MessageSecurityMode::SignAndEncrypt, ) - .into() } -fn endpoint_basic256_sign() -> EndpointDescription { - ( +fn endpoint_basic256_sign(port: u16) -> EndpointDescription { + endpoint( + port, "/", - SecurityPolicy::Basic256.to_str(), + SecurityPolicy::Basic256, MessageSecurityMode::Sign, ) - .into() } -fn endpoint_basic256_sign_encrypt() -> EndpointDescription { - ( +fn endpoint_basic256_sign_encrypt(port: u16) -> EndpointDescription { + endpoint( + port, "/", - SecurityPolicy::Basic256.to_str(), + SecurityPolicy::Basic256, MessageSecurityMode::SignAndEncrypt, ) - .into() } -fn endpoint_basic256sha256_sign() -> EndpointDescription { - ( +fn endpoint_basic256sha256_sign(port: u16) -> EndpointDescription { + endpoint( + port, "/", - SecurityPolicy::Basic256Sha256.to_str(), + SecurityPolicy::Basic256Sha256, MessageSecurityMode::Sign, ) - .into() } -fn endpoint_basic256sha256_sign_encrypt() -> EndpointDescription { - ( +fn endpoint_basic256sha256_sign_encrypt(port: u16) -> EndpointDescription { + endpoint( + port, "/", - SecurityPolicy::Basic256Sha256.to_str(), + SecurityPolicy::Basic256Sha256, MessageSecurityMode::SignAndEncrypt, ) - .into() } -fn endpoint_aes128sha256rsaoaep_sign() -> EndpointDescription { - ( +fn endpoint_aes128sha256rsaoaep_sign(port: u16) -> EndpointDescription { + endpoint( + port, "/", - SecurityPolicy::Aes128Sha256RsaOaep.to_str(), + SecurityPolicy::Aes128Sha256RsaOaep, MessageSecurityMode::Sign, ) - .into() } -fn endpoint_aes128sha256rsaoaep_sign_encrypt() -> EndpointDescription { - ( +fn endpoint_aes128sha256rsaoaep_sign_encrypt(port: u16) -> EndpointDescription { + endpoint( + port, "/", - SecurityPolicy::Aes128Sha256RsaOaep.to_str(), + SecurityPolicy::Aes128Sha256RsaOaep, MessageSecurityMode::SignAndEncrypt, ) - .into() } -fn endpoint_aes256sha256rsapss_sign() -> EndpointDescription { - ( +fn endpoint_aes256sha256rsapss_sign(port: u16) -> EndpointDescription { + endpoint( + port, "/", - SecurityPolicy::Aes256Sha256RsaPss.to_str(), + SecurityPolicy::Aes256Sha256RsaPss, MessageSecurityMode::Sign, ) - .into() } -fn endpoint_aes256sha256rsapss_sign_encrypt() -> EndpointDescription { - ( +fn endpoint_aes256sha256rsapss_sign_encrypt(port: u16) -> EndpointDescription { + endpoint( + port, "/", - SecurityPolicy::Aes256Sha256RsaPss.to_str(), + SecurityPolicy::Aes256Sha256RsaPss, MessageSecurityMode::SignAndEncrypt, ) - .into() } /// This is the most basic integration test starting the server on a thread, setting an abort flag @@ -231,7 +239,8 @@ fn get_endpoints() { #[ignore] fn connect_none() { // Connect a session using None security policy and anonymous token. - connect_with(next_port(), endpoint_none(), IdentityToken::Anonymous); + let port = next_port(); + connect_with(port, endpoint_none(port), IdentityToken::Anonymous); } /// Connect to the server using Basic128Rsa15 + Sign @@ -239,9 +248,10 @@ fn connect_none() { #[ignore] fn connect_basic128rsa15_sign() { // Connect a session with Basic128Rsa and Sign + let port = next_port(); connect_with( - next_port(), - endpoint_basic128rsa15_sign(), + port, + endpoint_basic128rsa15_sign(port), IdentityToken::Anonymous, ); } @@ -251,9 +261,10 @@ fn connect_basic128rsa15_sign() { #[ignore] fn connect_basic128rsa15_sign_and_encrypt() { // Connect a session with Basic128Rsa and SignAndEncrypt + let port = next_port(); connect_with( - next_port(), - endpoint_basic128rsa15_sign_encrypt(), + port, + endpoint_basic128rsa15_sign_encrypt(port), IdentityToken::Anonymous, ); } @@ -263,11 +274,8 @@ fn connect_basic128rsa15_sign_and_encrypt() { #[ignore] fn connect_basic256_sign() { // Connect a session with Basic256 and Sign - connect_with( - next_port(), - endpoint_basic256_sign(), - IdentityToken::Anonymous, - ); + let port = next_port(); + connect_with(port, endpoint_basic256_sign(port), IdentityToken::Anonymous); } /// Connect to the server using Basic256 + SignEncrypt @@ -275,9 +283,10 @@ fn connect_basic256_sign() { #[ignore] fn connect_basic256_sign_and_encrypt() { // Connect a session with Basic256 and SignAndEncrypt + let port = next_port(); connect_with( - next_port(), - endpoint_basic256_sign_encrypt(), + port, + endpoint_basic256_sign_encrypt(port), IdentityToken::Anonymous, ); } @@ -287,9 +296,10 @@ fn connect_basic256_sign_and_encrypt() { #[ignore] fn connect_basic256sha256_sign() { // Connect a session with Basic256Sha256 and Sign + let port = next_port(); connect_with( - next_port(), - endpoint_basic256sha256_sign(), + port, + endpoint_basic256sha256_sign(port), IdentityToken::Anonymous, ); } @@ -298,9 +308,10 @@ fn connect_basic256sha256_sign() { #[test] #[ignore] fn connect_basic256sha256_sign_and_encrypt() { + let port = next_port(); connect_with( - next_port(), - endpoint_basic256sha256_sign_encrypt(), + port, + endpoint_basic256sha256_sign_encrypt(port), IdentityToken::Anonymous, ); } @@ -309,9 +320,10 @@ fn connect_basic256sha256_sign_and_encrypt() { #[test] #[ignore] fn connect_aes128sha256rsaoaep_sign() { + let port = next_port(); connect_with( - next_port(), - endpoint_aes128sha256rsaoaep_sign(), + port, + endpoint_aes128sha256rsaoaep_sign(port), IdentityToken::Anonymous, ); } @@ -320,9 +332,10 @@ fn connect_aes128sha256rsaoaep_sign() { #[test] #[ignore] fn connect_aes128sha256rsaoaep_sign_encrypt() { + let port = next_port(); connect_with( - next_port(), - endpoint_aes128sha256rsaoaep_sign_encrypt(), + port, + endpoint_aes128sha256rsaoaep_sign_encrypt(port), IdentityToken::Anonymous, ); } @@ -331,9 +344,10 @@ fn connect_aes128sha256rsaoaep_sign_encrypt() { #[test] #[ignore] fn connect_aes256sha256rsapss_sign() { + let port = next_port(); connect_with( - next_port(), - endpoint_aes256sha256rsapss_sign(), + port, + endpoint_aes256sha256rsapss_sign(port), IdentityToken::Anonymous, ); } @@ -342,9 +356,10 @@ fn connect_aes256sha256rsapss_sign() { #[test] #[ignore] fn connect_aes256sha256rsapss_sign_encrypt() { + let port = next_port(); connect_with( - next_port(), - endpoint_aes256sha256rsapss_sign_encrypt(), + port, + endpoint_aes256sha256rsapss_sign_encrypt(port), IdentityToken::Anonymous, ); } @@ -354,9 +369,10 @@ fn connect_aes256sha256rsapss_sign_encrypt() { #[ignore] fn connect_basic128rsa15_with_username_password() { // Connect a session using username/password token + let port = next_port(); connect_with( - next_port(), - endpoint_basic128rsa15_sign_encrypt(), + port, + endpoint_basic128rsa15_sign_encrypt(port), client_user_token(), ); } @@ -365,9 +381,10 @@ fn connect_basic128rsa15_with_username_password() { #[test] #[ignore] fn connect_basic128rsa15_with_invalid_username_password() { + let port = next_port(); connect_with_invalid_token( - next_port(), - endpoint_basic128rsa15_sign_encrypt(), + port, + endpoint_basic128rsa15_sign_encrypt(port), client_invalid_user_token(), ); } @@ -376,9 +393,10 @@ fn connect_basic128rsa15_with_invalid_username_password() { #[test] #[ignore] fn connect_basic128rsa15_with_x509_token() { + let port = next_port(); connect_with( - next_port(), - endpoint_basic128rsa15_sign_encrypt(), + port, + endpoint_basic128rsa15_sign_encrypt(port), client_x509_token(), ); } @@ -387,12 +405,9 @@ fn connect_basic128rsa15_with_x509_token() { #[test] #[ignore] fn read_write_read() { - let mut client_endpoint = endpoint_basic128rsa15_sign_encrypt(); let port = next_port(); + let client_endpoint = endpoint_basic128rsa15_sign_encrypt(port); let identity_token = client_x509_token(); - - client_endpoint.endpoint_url = - UAString::from(endpoint_url(port, client_endpoint.endpoint_url.as_ref())); connect_with_client_test( port, move |_rx_client_command: mpsc::Receiver, mut client: Client| { @@ -452,12 +467,10 @@ fn read_write_read() { #[test] #[ignore] fn subscribe_1000() { - let mut client_endpoint = endpoint_basic128rsa15_sign_encrypt(); let port = next_port(); + let client_endpoint = endpoint_basic128rsa15_sign_encrypt(port); let identity_token = client_x509_token(); - client_endpoint.endpoint_url = - UAString::from(endpoint_url(port, client_endpoint.endpoint_url.as_ref())); connect_with_client_test( port, move |_rx_client_command: mpsc::Receiver, mut client: Client| { @@ -527,3 +540,43 @@ fn subscribe_1000() { }, ); } + +#[test] +#[ignore] +fn method_call() { + // Call a method on the server, one exercising some parameters in and out + let port = next_port(); + let client_endpoint = endpoint_none(port); + + connect_with_client_test( + port, + move |_rx_client_command: mpsc::Receiver, mut client: Client| { + info!( + "Client will try to connect to endpoint {:?}", + client_endpoint + ); + let session = client + .connect_to_endpoint(client_endpoint, IdentityToken::Anonymous) + .unwrap(); + let session = session.read().unwrap(); + + // Call the method + let input_arguments = Some(vec![Variant::from("Foo")]); + let method = CallMethodRequest { + object_id: functions_object_id(), + method_id: hellox_method_id(), + input_arguments, + }; + let result = session.call(method).unwrap(); + + // Result should say "Hello Foo" + assert!(result.status_code.is_good()); + let output_args = result.output_arguments.unwrap(); + assert_eq!(output_args.len(), 1); + let msg = output_args.get(0).unwrap(); + assert_eq!(msg.to_string(), "Hello Foo!"); + + session.disconnect(); + }, + ); +}