Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix --interface-id and improve minmdns address policy #37360

Open
wants to merge 9 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 19 additions & 19 deletions .github/workflows/java-tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ jobs:
scripts/run_in_python_env.sh out/venv \
'./scripts/tests/run_java_test.py \
--app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app \
--app-args "--discriminator 3840 --interface-id -1" \
--app-args "--discriminator 3840" \
--tool-path out/linux-x64-java-matter-controller \
--tool-cluster "discover" \
--tool-args "commissionables" \
Expand All @@ -124,7 +124,7 @@ jobs:
scripts/run_in_python_env.sh out/venv \
'./scripts/tests/run_java_test.py \
--app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app \
--app-args "--discriminator 3840 --interface-id -1" \
--app-args "--discriminator 3840" \
--tool-path out/linux-x64-java-matter-controller \
--tool-cluster "pairing" \
--tool-args "onnetwork-long --nodeid 1 --setup-pin-code 20202021 --discriminator 3840 -t 1000" \
Expand All @@ -137,7 +137,7 @@ jobs:
scripts/run_in_python_env.sh out/venv \
'./scripts/tests/run_java_test.py \
--app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app \
--app-args "--discriminator 3840 --interface-id -1" \
--app-args "--discriminator 3840" \
--tool-path out/linux-x64-java-matter-controller \
--tool-cluster "im" \
--tool-args "onnetwork-long-im-invoke --nodeid 1 --setup-pin-code 20202021 --discriminator 3840 -t 1000" \
Expand All @@ -150,7 +150,7 @@ jobs:
scripts/run_in_python_env.sh out/venv \
'./scripts/tests/run_java_test.py \
--app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app \
--app-args "--discriminator 3840 --interface-id -1" \
--app-args "--discriminator 3840" \
--tool-path out/linux-x64-java-matter-controller \
--tool-cluster "im" \
--tool-args "onnetwork-long-im-extendable-invoke --nodeid 1 --setup-pin-code 20202021 --discriminator 3840 -t 1000" \
Expand All @@ -163,7 +163,7 @@ jobs:
scripts/run_in_python_env.sh out/venv \
'./scripts/tests/run_java_test.py \
--app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app \
--app-args "--discriminator 3840 --interface-id -1" \
--app-args "--discriminator 3840" \
--tool-path out/linux-x64-java-matter-controller \
--tool-cluster "im" \
--tool-args "onnetwork-long-im-read --nodeid 1 --setup-pin-code 20202021 --discriminator 3840 -t 3000" \
Expand All @@ -176,7 +176,7 @@ jobs:
scripts/run_in_python_env.sh out/venv \
'./scripts/tests/run_java_test.py \
--app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app \
--app-args "--discriminator 3840 --interface-id -1" \
--app-args "--discriminator 3840" \
--tool-path out/linux-x64-java-matter-controller \
--tool-cluster "im" \
--tool-args "onnetwork-long-im-write --nodeid 1 --setup-pin-code 20202021 --discriminator 3840 -t 1000" \
Expand All @@ -189,7 +189,7 @@ jobs:
scripts/run_in_python_env.sh out/venv \
'./scripts/tests/run_java_test.py \
--app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app \
--app-args "--discriminator 3840 --interface-id -1" \
--app-args "--discriminator 3840" \
--tool-path out/linux-x64-java-matter-controller \
--tool-cluster "im" \
--tool-args "onnetwork-long-im-subscribe --nodeid 1 --setup-pin-code 20202021 --discriminator 3840 -t 3000" \
Expand All @@ -202,7 +202,7 @@ jobs:
scripts/run_in_python_env.sh out/venv \
'./scripts/tests/run_java_test.py \
--app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app \
--app-args "--discriminator 3840 --interface-id -1" \
--app-args "--discriminator 3840" \
--tool-path out/linux-x64-java-matter-controller \
--tool-cluster "pairing" \
--tool-args "already-discovered --nodeid 1 --setup-pin-code 20202021 --address ::1 --port 5540 -t 1000" \
Expand All @@ -215,7 +215,7 @@ jobs:
scripts/run_in_python_env.sh out/venv \
'./scripts/tests/run_java_test.py \
--app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app \
--app-args "--discriminator 3840 --interface-id -1" \
--app-args "--discriminator 3840" \
--tool-path out/linux-x64-java-matter-controller \
--tool-cluster "pairing" \
--tool-args "address-paseonly --nodeid 1 --setup-pin-code 20202021 --address ::1 --port 5540 -t 1000" \
Expand All @@ -228,7 +228,7 @@ jobs:
scripts/run_in_python_env.sh out/venv \
'./scripts/tests/run_java_test.py \
--app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app \
--app-args "--discriminator 3840 --interface-id -1" \
--app-args "--discriminator 3840" \
--tool-path out/linux-x64-java-matter-controller \
--tool-cluster "pairing" \
--tool-args "code --nodeid 1 --setup-payload MT:-24J0AFN00KA0648G00 --discover-once 1 --use-only-onnetwork-discovery 0 -t 1000" \
Expand All @@ -241,7 +241,7 @@ jobs:
scripts/run_in_python_env.sh out/venv \
'./scripts/tests/run_java_test.py \
--app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app \
--app-args "--discriminator 3840 --interface-id -1" \
--app-args "--discriminator 3840" \
--tool-path out/linux-x64-java-matter-controller \
--tool-cluster "pairing" \
--tool-args "code --nodeid 1 --setup-payload 34970112332 --discover-once 1 --use-only-onnetwork-discovery 0 -t 1000" \
Expand All @@ -254,7 +254,7 @@ jobs:
scripts/run_in_python_env.sh out/venv \
'./scripts/tests/run_java_test.py \
--app out/linux-x64-lit-icd-ipv6only/lit-icd-app \
--app-args "--discriminator 3840 --interface-id -1" \
--app-args "--discriminator 3840" \
--tool-path out/linux-x64-java-matter-controller \
--tool-cluster "pairing" \
--tool-args "onnetwork-long --nodeid 1 --setup-pin-code 20202021 --discriminator 3840 -t 1000" \
Expand All @@ -267,7 +267,7 @@ jobs:
scripts/run_in_python_env.sh out/venv \
'./scripts/tests/run_java_test.py \
--app out/linux-x64-ota-requestor/chip-ota-requestor-app \
--app-args "--discriminator 3840 --interface-id -1" \
--app-args "--discriminator 3840" \
--tool-path out/linux-x64-java-matter-controller \
--tool-cluster "ota" \
--tool-args "onnetwork-long-ota-over-bdx --nodeid 1 --setup-pin-code 20202021 --discriminator 3840 -t 1000" \
Expand All @@ -278,7 +278,7 @@ jobs:
scripts/run_in_python_env.sh out/venv \
'./scripts/tests/run_java_test.py \
--app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app \
--app-args "--discriminator 3840 --interface-id -1 --crash_log ./crashLog.log --end_user_support_log ./enduser.log --network_diagnostics_log ./network.log" \
--app-args "--discriminator 3840 --crash_log ./crashLog.log --end_user_support_log ./enduser.log --network_diagnostics_log ./network.log" \
--tool-path out/linux-x64-java-matter-controller \
--tool-cluster "bdx" \
--tool-args "onnetwork-long-downloadLog --nodeid 1 --setup-pin-code 20202021 --discriminator 3840 -t 3000 --logType CrashLogs --fileName ./crashLog.log" \
Expand All @@ -291,7 +291,7 @@ jobs:
scripts/run_in_python_env.sh out/venv \
'./scripts/tests/run_kotlin_test.py \
--app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app \
--app-args "--discriminator 3840 --interface-id -1" \
--app-args "--discriminator 3840" \
--tool-path out/linux-x64-kotlin-matter-controller \
--tool-cluster "pairing" \
--tool-args "onnetwork-long --nodeid 1 --setup-pin-code 20202021 --discriminator 3840 -t 1000" \
Expand All @@ -304,7 +304,7 @@ jobs:
scripts/run_in_python_env.sh out/venv \
'./scripts/tests/run_kotlin_test.py \
--app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app \
--app-args "--discriminator 3840 --interface-id -1" \
--app-args "--discriminator 3840" \
--tool-path out/linux-x64-kotlin-matter-controller \
--tool-cluster "im" \
--tool-args "onnetwork-long-im-invoke --nodeid 1 --setup-pin-code 20202021 --discriminator 3840 -t 1000" \
Expand All @@ -317,7 +317,7 @@ jobs:
scripts/run_in_python_env.sh out/venv \
'./scripts/tests/run_kotlin_test.py \
--app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app \
--app-args "--discriminator 3840 --interface-id -1" \
--app-args "--discriminator 3840" \
--tool-path out/linux-x64-kotlin-matter-controller \
--tool-cluster "im" \
--tool-args "onnetwork-long-im-read --nodeid 1 --setup-pin-code 20202021 --discriminator 3840 -t 3000" \
Expand All @@ -330,7 +330,7 @@ jobs:
scripts/run_in_python_env.sh out/venv \
'./scripts/tests/run_kotlin_test.py \
--app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app \
--app-args "--discriminator 3840 --interface-id -1" \
--app-args "--discriminator 3840" \
--tool-path out/linux-x64-kotlin-matter-controller \
--tool-cluster "im" \
--tool-args "onnetwork-long-im-write --nodeid 1 --setup-pin-code 20202021 --discriminator 3840 -t 1000" \
Expand All @@ -343,7 +343,7 @@ jobs:
scripts/run_in_python_env.sh out/venv \
'./scripts/tests/run_kotlin_test.py \
--app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app \
--app-args "--discriminator 3840 --interface-id -1" \
--app-args "--discriminator 3840" \
--tool-path out/linux-x64-kotlin-matter-controller \
--tool-cluster "im" \
--tool-args "onnetwork-long-im-subscribe --nodeid 1 --setup-pin-code 20202021 --discriminator 3840 -t 3000" \
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -622,7 +622,7 @@ jobs:
"
- name: Run Tests
run: |
scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --app out/darwin-x64-all-clusters-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app --factory-reset --quiet --app-args "--discriminator 3840 --interface-id -1" --script-args "-t 3600 --disable-test ClusterObjectTests.TestTimedRequestTimeout"'
scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --app out/darwin-x64-all-clusters-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app --factory-reset --quiet --app-args "--discriminator 3840" --script-args "-t 3600 --disable-test ClusterObjectTests.TestTimedRequestTimeout"'
- name: Uploading core files
uses: actions/upload-artifact@v4
if: ${{ failure() && !env.ACT }}
Expand Down
6 changes: 2 additions & 4 deletions scripts/tests/chiptest/test_definition.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,18 +111,16 @@ def wait(self, timeout=None):
self.cv_stopped.wait()

def __startServer(self, runner, command):
app_cmd = command + ['--interface-id', str(-1)]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isn't this going to break running YAML tests on Darwin, by no longer passing that argument?


if not self.options:
logging.debug('Executing application under test with default args')
else:
logging.debug('Executing application under test with the following args:')
for key, value in self.options.items():
logging.debug(' %s: %s' % (key, value))
app_cmd = app_cmd + [key, value]
command = command + [key, value]
if key == '--KVS':
self.kvsPathSet.add(value)
return runner.RunSubprocess(app_cmd, name='APP ', wait=False)
return runner.RunSubprocess(command, name='APP ', wait=False)

def __waitFor(self, waitForString, server_process, outpipe, timeoutInSeconds=10):
logging.debug('Waiting for %s' % waitForString)
Expand Down
12 changes: 12 additions & 0 deletions src/app/server/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,20 @@ import("//build_overrides/chip.gni")
import("${chip_root}/src/access/access.gni")
import("${chip_root}/src/app/common_flags.gni")
import("${chip_root}/src/app/icd/icd.gni")
import("${chip_root}/src/platform/device.gni")

config("server_config") {
defines = []

if (chip_app_use_echo) {
defines += [ "CHIP_APP_USE_ECHO" ]
}

if (chip_mdns_minimal) {
defines += [ "CHIP_MDNS_MINIMAL=1" ]
} else {
defines += [ "CHIP_MDNS_MINIMAL=0" ]
}
}

source_set("terms_and_conditions") {
Expand Down Expand Up @@ -85,6 +92,11 @@ static_library("server") {
"${chip_root}/src/transport",
]

if (chip_mdns_minimal) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we have mdns as minimal or platform ... so this may pull a mdns dependency even for thread (at least CI link errors seem to indicate that).

public_deps +=
[ "${chip_root}/src/lib/dnssd/minimal_mdns:singleinterface_policy" ]
}

if (chip_terms_and_conditions_required) {
public_deps += [ ":terms_and_conditions" ]
}
Expand Down
11 changes: 11 additions & 0 deletions src/app/server/Server.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,9 @@
#if CHIP_ENABLE_ROTATING_DEVICE_ID && defined(CHIP_DEVICE_CONFIG_ROTATING_DEVICE_ID_UNIQUE_ID)
#include <setup_payload/AdditionalDataPayloadGenerator.h>
#endif
#if defined(CHIP_MDNS_MINIMAL)
#include <lib/dnssd/minimal_mdns/AddressPolicy_SingleInterface.h> // nogncheck
#endif
#include <setup_payload/SetupPayload.h>
#include <sys/param.h>
#include <system/SystemPacketBuffer.h>
Expand Down Expand Up @@ -116,6 +119,14 @@ CHIP_ERROR Server::Init(const ServerInitParams & initParams)
mUserDirectedCommissioningPort = initParams.userDirectedCommissioningPort;
mInterfaceId = initParams.interfaceId;

#if defined(CHIP_MDNS_MINIMAL)
if (mInterfaceId != chip::Inet::InterfaceId::Null())
{
static mdns::Minimal::SingleInterfaceAddressPolicy policy(mdns::Minimal::GetAddressPolicy(), mInterfaceId);
mdns::Minimal::SetAddressPolicy(&policy);
}
#endif

#if INET_CONFIG_ENABLE_TCP_ENDPOINT
auto tcpListenParams = TcpListenParameters(DeviceLayer::TCPEndPointManager())
.SetAddressType(IPAddressType::kIPv6)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,6 @@ + (NSTask *)doStartAppWithName:(NSString *)name arguments:(NSArray<NSString *> *
__auto_type * appTask = [self createTaskForPath:executable];

__auto_type * forcedArguments = @[
// Make sure we only advertise on the local interface.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Again, this is going to break the Darwin tests, causing a lot of random failures due to cross-talk between runners. Stopping here.

@"--interface-id",
@"-1",
@"--secured-device-port",
[NSString stringWithFormat:@"%u", kBasePort + discriminator.unsignedShortValue],
@"--discriminator",
Expand Down
26 changes: 0 additions & 26 deletions src/lib/dnssd/MinimalMdnsServer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,25 +15,7 @@
* limitations under the License.
*/
#include "MinimalMdnsServer.h"

#include <lib/dnssd/minimal_mdns/AddressPolicy.h>

#ifndef CHIP_MINMDNS_DEFAULT_POLICY
#define CHIP_MINMDNS_DEFAULT_POLICY 0
#endif

#ifndef CHIP_MINMDNS_LIBNL_POLICY
#define CHIP_MINMDNS_LIBNL_POLICY 0
#endif

#if CHIP_MINMDNS_DEFAULT_POLICY
#include <lib/dnssd/minimal_mdns/AddressPolicy_DefaultImpl.h> // nogncheck
#endif

#if CHIP_MINMDNS_LIBNL_POLICY
#include <lib/dnssd/minimal_mdns/AddressPolicy_LibNlImpl.h> // nogncheck
#endif

namespace chip {
namespace Dnssd {

Expand All @@ -43,14 +25,6 @@ using chip::Platform::UniquePtr;
GlobalMinimalMdnsServer::GlobalMinimalMdnsServer()
{
mServer.SetDelegate(this);

#if CHIP_MINMDNS_DEFAULT_POLICY
mdns::Minimal::SetDefaultAddressPolicy();
#endif

#if CHIP_MINMDNS_LIBNL_POLICY
mdns::Minimal::LibNl::SetAddressPolicy();
#endif
}

GlobalMinimalMdnsServer & GlobalMinimalMdnsServer::Instance()
Expand Down
15 changes: 14 additions & 1 deletion src/lib/dnssd/minimal_mdns/AddressPolicy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,22 @@ namespace {
AddressPolicy * gAddressPolicy = nullptr;
} // namespace

// This will be resolved at link time if a default policy is set
#ifndef CHIP_MINMDNS_NONE_POLICY
AddressPolicy * GetDefaultAddressPolicy();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this should go in some header rather than declared here and then in other per-policy headers in a repeated manner.

We want to ensure a single declaration placement. Probably in AddressPolicy.h . Full documentation on usage should be described there.

#endif

AddressPolicy * GetAddressPolicy()
{
VerifyOrDie(gAddressPolicy != nullptr);
#ifndef CHIP_MINMDNS_NONE_POLICY
// The GetDefaultAddressPolicy() function should be defined by a compile-defined default policy.
if (gAddressPolicy == nullptr)
{
auto p = GetDefaultAddressPolicy();
VerifyOrDie(p != nullptr);
SetAddressPolicy(p);
}
#endif
return gAddressPolicy;
}

Expand Down
1 change: 1 addition & 0 deletions src/lib/dnssd/minimal_mdns/AddressPolicy.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ AddressPolicy * GetAddressPolicy();

/// Update the global address policy.
///
/// If no default address policy is set at compile time, this function
/// MUST be called before any minmdns functionality is used (e.g. server
/// startup)
void SetAddressPolicy(AddressPolicy * policy);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ bool AllInterfaces::CurrentInterfaceHasAddressOfType(chip::Inet::IPAddressType t
return false;
}

class DefaultAddressPolicy : public AddressPolicy
class BuiltinAddressPolicy : public AddressPolicy
{
public:
chip::Platform::UniquePtr<ListenIterator> GetListenEndpoints() override
Expand All @@ -215,13 +215,12 @@ class DefaultAddressPolicy : public AddressPolicy
}
};

DefaultAddressPolicy gDefaultAddressPolicy;

} // namespace

void SetDefaultAddressPolicy()
AddressPolicy * GetDefaultAddressPolicy()
{
SetAddressPolicy(&gDefaultAddressPolicy);
static BuiltinAddressPolicy gAddressPolicy;
return &gAddressPolicy;
}

} // namespace Minimal
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,12 @@
*/
#pragma once

#include <lib/dnssd/minimal_mdns/AddressPolicy.h>

namespace mdns {
namespace Minimal {

void SetDefaultAddressPolicy();
AddressPolicy * GetDefaultAddressPolicy();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should probably be removed from here. Likely we may not need this header at all.


} // namespace Minimal
} // namespace mdns
Loading
Loading