ALLJoyn-NS - AllJoyn Name Service
What is AllJoyn-NS?
AllJoyn-NS stands for AllJoyn Name Service. It is a core component of the AllJoyn framework responsible for device and service discovery on a local network.
It enables devices to advertise their presence and discover other devices using human-readable names, without requiring manual IP address configuration.
Why is AllJoyn-NS useful?
Service discovery – Devices can automatically find each other without manual setup.
Dynamic networking – Supports environments where devices frequently join or leave the network.
Interoperability – Enables communication between devices from different vendors.
Simplified addressing – Uses friendly names instead of raw IP or MAC addresses.
How it works?
Device joins the network – Registers a well-known name (e.g., org.alljoyn.sample.chat) with the AllJoyn Name Service.
Name is advertised – The name is broadcast on the local network.
Other devices resolve the name – Clients look up the service using its advertised name.
Communication begins – Devices establish a session and start interacting using the AllJoyn messaging system.
Where is AllJoyn-NS used?
Smart home ecosystems – Lights, thermostats, appliances.
IoT environments – For peer discovery in dynamic device networks.
Consumer electronics – TVs, speakers, and mobile devices with AllJoyn support.
Cross-platform applications – Android, Windows, Linux, and more.
Which OSI layer does this protocol belong to?
Operates at the Application Layer (Layer 7).
Provides naming and discovery services to applications.
Abstracts lower-layer details (e.g., IP, transport) to simplify development.
Is AllJoyn-NS Windows-specific?
No, AllJoyn-NS is not Windows-specific.
It is a cross-platform protocol supported on Windows, Linux, Android, and other systems.
Is AllJoyn-NS Linux-specific?
No, AllJoyn-NS is not Linux-specific.
It supports multiple operating systems, including Linux, Windows, and Android.
Which Transport Protocol is used by AllJoyn-NS?
AllJoyn-NS uses both: * TCP – For reliable communication. * UDP – For lightweight service discovery broadcasts.
Which Port is used by AllJoyn-NS?
AllJoyn-NS typically uses dynamically negotiated ports.
It does not rely on a fixed port, allowing flexible deployment across networks.
Is AllJoyn-NS using the client-server model?
Yes, AllJoyn-NS follows a client-server model.
Clients register and resolve services, while servers advertise and respond to discovery requests.
Topics in this section,
In this section, you are going to learn
Terminology
Version Info
Version & RFC Details |
|||
---|---|---|---|
ALLJOYN-NS Version |
Spec |
Year |
Core Idea / Contribution |
14.06 |
|||
Internal Spec (AllSeen Alliance) |
2014 |
Initial release of AllJoyn system; introduced core services including Name Service (NS). |
|
14.12 |
|||
Internal Spec (AllSeen Alliance) |
2014 |
Added mDNS-based discovery, TCP/UDP transport logic, and router probing mechanisms. |
|
15.04 |
|||
Internal Spec (AllSeen Alliance) |
2015 |
Enhanced security, router selection, and removed deprecated authentication methods. |
|
16.1 |
|||
Internal Spec (AllSeen Alliance) |
2016 |
Last major release before project sunset; included full NS support and cross-platform stability. |
|
oneM2M Interworking |
|||
ETSI TS 118 121 V2.0.1 |
2020 |
Defined interworking between AllJoyn and oneM2M systems, including NS mapping and discovery. |
|
Setup
Setup
ALLJoyn_NS Is-At Packet
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
1 |
Is-At Packet |
Sent by a device to advertise its presence and services on the network. |
~60100 bytes |
Header |
|||
Endian |
Byte order indicator |
1 |
|
Message Type |
Signal, method call, etc. |
1 |
|
Flags |
Message flags (e.g., encrypted, broadcast) |
1 |
|
Major Version |
Protocol version |
1 |
|
Body Length |
Length of the message body |
4 |
|
Serial |
Serial number of the message |
4 |
|
Header Length |
Length of the header |
4 |
|
Body |
|||
Version |
Protocol version |
1 |
|
Message Type |
Indicates “Is-At” message |
1 |
|
Flags |
Bitmask for options (e.g., TCP support, complete message) |
1 |
|
GUID |
Unique identifier for the advertising device |
16 |
|
IPv4 Address |
IP address of the device |
4 |
|
IPv6 Address |
Optional, if supported |
16 |
|
Port |
Port number for service communication |
2 |
|
Name Count |
Number of advertised names |
1 |
|
Names |
List of service names (null-terminated strings) |
variable |
ALLJoyn_NS Who-Has Packet
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
2 |
Who-Has Packet |
Sent by a device to discover services or other devices on the network. |
(~4080 bytes) |
Header |
|||
Endian |
Byte order indicator |
1 |
|
Message Type |
Signal, method call, etc. |
1 |
|
Flags |
Message flags (e.g., encrypted, broadcast) |
1 |
|
Major Version |
Protocol version |
1 |
|
Body Length |
Length of the message body |
4 |
|
Serial |
Serial number of the message |
4 |
|
Header Length |
Length of the header |
4 |
|
Body |
|||
Version |
Protocol version |
1 |
|
Message Type |
Indicates “Who-Has” message |
1 |
|
Flags |
Bitmask for options |
1 |
|
GUID |
Unique identifier of the sender |
16 |
|
Name Count |
Number of names being queried |
1 |
|
Names |
List of names being searched for |
Variable |
ALLJOYN-NS - Use Cases |
||
---|---|---|
S.no |
Use Case |
Description |
1 |
Local Device Discovery |
Enables devices on the same network to discover each other without a central server. |
2 |
Service Advertisement |
Allows devices to advertise their services (e.g., media sharing, lighting control) to others. |
3 |
Peer-to-Peer Communication Setup |
Facilitates initial handshake between devices for secure and direct communication. |
4 |
IoT Ecosystem Integration |
Supports seamless integration of smart home or industrial IoT devices using a common framework. |
5 |
Cross-Platform Interoperability |
Enables discovery across different OS platforms (e.g., Android, Linux, Windows) using AllJoyn. |
6 |
Routerless Network Operation |
Operates in networks without a dedicated router or DNS infrastructure. |
7 |
oneM2M Interworking |
Supports interworking with oneM2M architecture for broader IoT interoperability. |
ALLJOYN-NS - Basic Features |
||
---|---|---|
S.no |
Features |
Description |
1 |
UDP-Based Discovery |
Uses UDP multicast for lightweight and efficient service discovery. |
2 |
Name Advertisement |
Devices can advertise their unique names and services to others on the network. |
3 |
Multicast and Unicast Support |
Supports both multicast for discovery and unicast for direct responses. |
4 |
Platform Agnostic |
Works across multiple platforms including Android, Linux, and Windows. |
5 |
No Central Server Required |
Operates in a decentralized manner without needing a DNS or directory server. |
6 |
Dynamic Service Resolution |
Allows real-time resolution of services as devices join or leave the network. |
7 |
Integration with AllJoyn Router |
Works with the AllJoyn Router to manage routing and discovery across devices. |
UDP-Based Discovery - Testcases
UDP-Based Discovery - Test Cases |
|||
---|---|---|---|
# |
Test Case |
Description |
Expected Result |
1 |
Valid WHO-HAS Message |
Send a valid WHO-HAS message for a known service name |
IS-AT response is received from the advertising node |
2 |
Invalid WHO-HAS Message |
Send a WHO-HAS message with a malformed header |
No response is received; error is logged |
3 |
Valid IS-AT Message |
Send a valid IS-AT message advertising a service |
Service becomes discoverable on the network |
4 |
Duplicate IS-AT Message |
Send duplicate IS-AT messages for the same service |
Only one service entry is maintained in the discovery cache |
5 |
WHO-HAS for Unknown Service |
Send WHO-HAS for a non-existent service |
No IS-AT response is received |
6 |
Multicast WHO-HAS |
Send WHO-HAS over multicast to 224.0.0.113 |
All listening nodes receive the message |
7 |
Unicast WHO-HAS |
Send WHO-HAS over unicast to a specific node |
Only the targeted node processes the message |
8 |
IS-AT TTL Expiry |
Send IS-AT with a short TTL and wait for expiry |
Service is removed from discovery cache after TTL |
9 |
WHO-HAS with Wildcard |
Send WHO-HAS with wildcard service name |
All matching services respond with IS-AT |
10 |
IS-AT with Multiple Names |
Send IS-AT advertising multiple service names |
All names are registered and discoverable |
11 |
WHO-HAS with Empty Name |
Send WHO-HAS with an empty service name |
No IS-AT response is received |
12 |
IS-AT with Invalid TTL |
Send IS-AT with a negative TTL |
Message is ignored or error is logged |
13 |
WHO-HAS with Long Name |
Send WHO-HAS with a service name exceeding max length |
Message is ignored or error is logged |
14 |
IS-AT with Expired Timestamp |
Send IS-AT with a timestamp in the past |
Message is ignored |
15 |
WHO-HAS with Future Timestamp |
Send WHO-HAS with a timestamp in the future |
Message is ignored |
16 |
IS-AT with No Names |
Send IS-AT with no service names |
Message is ignored |
17 |
WHO-HAS with Multiple Names |
Send WHO-HAS for multiple service names |
IS-AT responses are received for all matching services |
18 |
IS-AT with Invalid Format |
Send IS-AT with incorrect message format |
Message is ignored or error is logged |
19 |
WHO-HAS with Invalid Format |
Send WHO-HAS with incorrect message format |
Message is ignored or error is logged |
20 |
IS-AT with Duplicate Names |
Send IS-AT with duplicate service names |
Only unique names are registered |
21 |
WHO-HAS with TTL |
Send WHO-HAS with a TTL field |
TTL is ignored; WHO-HAS is processed normally |
22 |
IS-AT with Large Payload |
Send IS-AT with a large number of service names |
All names are processed if within limits |
23 |
WHO-HAS with Large Payload |
Send WHO-HAS with many service names |
All names are processed if within limits |
24 |
IS-AT with Special Characters |
Send IS-AT with service names containing special characters |
Names are registered if valid |
25 |
WHO-HAS with Special Characters |
Send WHO-HAS with service names containing special characters |
Matching services respond |
26 |
IS-AT with Unicode Names |
Send IS-AT with Unicode service names |
Names are registered and discoverable |
27 |
WHO-HAS with Unicode Names |
Send WHO-HAS with Unicode service names |
Matching services respond |
28 |
IS-AT with Null Characters |
Send IS-AT with null characters in names |
Message is ignored or error is logged |
29 |
WHO-HAS with Null Characters |
Send WHO-HAS with null characters in names |
Message is ignored or error is logged |
30 |
IS-AT with Max TTL |
Send IS-AT with maximum TTL value |
Service remains discoverable for the full TTL duration |
31 |
WHO-HAS with Max Length Name |
Send WHO-HAS with a name at max allowed length |
Matching services respond |
32 |
IS-AT with Max Length Name |
Send IS-AT with a name at max allowed length |
Name is registered and discoverable |
33 |
WHO-HAS with Invalid Multicast Address |
Send WHO-HAS to an invalid multicast address |
Message is not received by any node |
34 |
IS-AT with Invalid Multicast Address |
Send IS-AT to an invalid multicast address |
Message is not received by any node |
35 |
WHO-HAS with Broadcast |
Send WHO-HAS using broadcast address |
All nodes receive the message |
36 |
IS-AT with Broadcast |
Send IS-AT using broadcast address |
All nodes receive the message |
37 |
WHO-HAS with No Network |
Send WHO-HAS with no network connectivity |
No response is received |
38 |
IS-AT with No Network |
Send IS-AT with no network connectivity |
Message is not received |
39 |
WHO-HAS with Delayed Response |
Send WHO-HAS and simulate delayed IS-AT response |
IS-AT is accepted if within timeout |
40 |
IS-AT with Delayed Send |
Delay sending IS-AT after WHO-HAS |
WHO-HAS requester receives IS-AT if within timeout |
41 |
WHO-HAS with Repeated Requests |
Send repeated WHO-HAS messages |
Multiple IS-AT responses may be received |
42 |
IS-AT with Repeated Advertisements |
Send repeated IS-AT messages |
Service remains discoverable |
43 |
WHO-HAS with Network Congestion |
Send WHO-HAS during network congestion |
IS-AT may be delayed or lost |
44 |
IS-AT with Network Congestion |
Send IS-AT during network congestion |
Message may be delayed or lost |
45 |
WHO-HAS with Packet Loss |
Simulate packet loss for WHO-HAS |
IS-AT may not be received |
46 |
IS-AT with Packet Loss |
Simulate packet loss for IS-AT |
Service may not be discovered |
47 |
WHO-HAS with Firewall |
Send WHO-HAS with firewall blocking UDP |
No IS-AT response is received |
48 |
IS-AT with Firewall |
Send IS-AT with firewall blocking UDP |
Message is not received |
49 |
WHO-HAS with NAT |
Send WHO-HAS from behind NAT |
IS-AT may not be received unless NAT traversal is supported |
50 |
IS-AT with NAT |
Send IS-AT from behind NAT |
Message may not reach external nodes |
Name Advertisement - Testcases
Name Advertisement - Test Cases |
|||
---|---|---|---|
# |
Test Case |
Description |
Expected Result |
1 |
Valid Name Advertisement |
Advertise a valid service name using IS-AT |
Service is advertised and discoverable |
2 |
Duplicate Name Advertisement |
Advertise the same name multiple times |
Only one entry is maintained in the discovery cache |
3 |
Advertisement with Empty Name |
Send IS-AT with an empty service name |
Message is ignored or error is logged |
4 |
Advertisement with Special Characters |
Advertise a name with special characters |
Name is registered if valid |
5 |
Advertisement with Unicode Characters |
Advertise a name with Unicode characters |
Name is registered and discoverable |
6 |
Advertisement with Max Length Name |
Advertise a name at maximum allowed length |
Name is registered and discoverable |
7 |
Advertisement with Exceeding Length |
Advertise a name exceeding maximum length |
Message is ignored or error is logged |
8 |
Advertisement with Null Characters |
Advertise a name containing null characters |
Message is ignored or error is logged |
9 |
Advertisement with Multiple Names |
Advertise multiple names in a single IS-AT |
All names are registered and discoverable |
10 |
Advertisement with TTL |
Advertise a name with a valid TTL |
Name is discoverable for the TTL duration |
11 |
Advertisement with Zero TTL |
Advertise a name with TTL set to zero |
Name is not registered |
12 |
Advertisement with Negative TTL |
Advertise a name with negative TTL |
Message is ignored or error is logged |
13 |
Advertisement with Max TTL |
Advertise a name with maximum TTL |
Name is discoverable for the full TTL duration |
14 |
Advertisement with Expired Timestamp |
Send IS-AT with a timestamp in the past |
Message is ignored |
15 |
Advertisement with Future Timestamp |
Send IS-AT with a timestamp in the future |
Message is ignored |
16 |
Advertisement with Invalid Format |
Send IS-AT with incorrect message format |
Message is ignored or error is logged |
17 |
Advertisement with Missing Fields |
Send IS-AT missing required fields |
Message is ignored or error is logged |
18 |
Advertisement with Extra Fields |
Send IS-AT with extra unexpected fields |
Message is processed if valid |
19 |
Advertisement with Invalid Header |
Send IS-AT with a malformed header |
Message is ignored or error is logged |
20 |
Advertisement with Valid Header |
Send IS-AT with a valid header |
Message is processed successfully |
21 |
Advertisement with Broadcast |
Send IS-AT using broadcast address |
All nodes receive the advertisement |
22 |
Advertisement with Multicast |
Send IS-AT using multicast address |
All listening nodes receive the advertisement |
23 |
Advertisement with Unicast |
Send IS-AT to a specific node |
Only the targeted node receives the advertisement |
24 |
Advertisement with Network Congestion |
Send IS-AT during network congestion |
Message may be delayed or lost |
25 |
Advertisement with Packet Loss |
Simulate packet loss during IS-AT transmission |
Message may not be received |
26 |
Advertisement with Firewall |
Send IS-AT with firewall blocking UDP |
Message is not received |
27 |
Advertisement with NAT |
Send IS-AT from behind NAT |
Message may not reach external nodes |
28 |
Advertisement with Repeated Messages |
Send repeated IS-AT messages |
Service remains discoverable |
29 |
Advertisement with Delayed Send |
Delay sending IS-AT after startup |
Service becomes discoverable after delay |
30 |
Advertisement with Invalid TTL Format |
Send IS-AT with TTL in invalid format |
Message is ignored or error is logged |
31 |
Advertisement with Valid TTL Format |
Send IS-AT with TTL in correct format |
Message is processed successfully |
32 |
Advertisement with Service Metadata |
Include metadata in IS-AT message |
Metadata is registered if supported |
33 |
Advertisement with Conflicting Names |
Advertise names that conflict with existing ones |
Conflict is resolved or logged |
34 |
Advertisement with Service Version |
Include version info in IS-AT |
Version is registered if supported |
35 |
Advertisement with Service Priority |
Include priority in IS-AT |
Priority is respected if supported |
36 |
Advertisement with Invalid Priority |
Send IS-AT with invalid priority value |
Message is ignored or error is logged |
37 |
Advertisement with TTL Expiry |
Wait for TTL to expire after advertisement |
Service is removed from cache |
38 |
Advertisement with TTL Refresh |
Re-advertise before TTL expiry |
TTL is refreshed and service remains discoverable |
39 |
Advertisement with Service Removal |
Send IS-AT with TTL=0 to remove service |
Service is removed from cache |
40 |
Advertisement with Service Update |
Send IS-AT with updated service info |
Service info is updated in cache |
41 |
Advertisement with Invalid Encoding |
Send IS-AT with invalid character encoding |
Message is ignored or error is logged |
42 |
Advertisement with Valid Encoding |
Send IS-AT with UTF-8 encoding |
Message is processed successfully |
43 |
Advertisement with High Frequency |
Send IS-AT messages at high frequency |
System handles or throttles messages |
44 |
Advertisement with Low Frequency |
Send IS-AT messages at low frequency |
Service remains discoverable if TTL is sufficient |
45 |
Advertisement with Service Grouping |
Advertise services grouped by category |
Groups are registered if supported |
46 |
Advertisement with Invalid Grouping |
Send IS-AT with invalid group format |
Message is ignored or error is logged |
47 |
Advertisement with Logging Enabled |
Enable logging during advertisement |
Logs show advertisement activity |
48 |
Advertisement with Logging Disabled |
Disable logging during advertisement |
No logs are generated |
49 |
Advertisement with Debug Mode |
Enable debug mode during advertisement |
Detailed logs are generated |
50 |
Advertisement with Production Mode |
Send IS-AT in production mode |
Minimal logs and optimized performance |
Multicast and Unicast Support - Testcases
Multicast and Unicast Support - Test Cases |
|||
---|---|---|---|
# |
Test Case |
Description |
Expected Result |
1 |
Multicast WHO-HAS |
Send WHO-HAS over multicast to 224.0.0.113 |
All listening nodes receive the message |
2 |
Unicast WHO-HAS |
Send WHO-HAS over unicast to a specific node |
Only the targeted node processes the message |
3 |
Multicast IS-AT |
Send IS-AT over multicast |
All nodes receive the advertisement |
4 |
Unicast IS-AT |
Send IS-AT over unicast |
Only the targeted node receives the advertisement |
5 |
Invalid Multicast Address |
Send WHO-HAS to an invalid multicast address |
Message is not received by any node |
6 |
Invalid Unicast Address |
Send WHO-HAS to an invalid unicast address |
Message is not received |
7 |
Multicast with TTL |
Send multicast WHO-HAS with TTL set |
Message is received within TTL scope |
8 |
Unicast with TTL |
Send unicast WHO-HAS with TTL set |
TTL is ignored; message is delivered |
9 |
Multicast with Packet Loss |
Simulate packet loss during multicast |
Some nodes may not receive the message |
10 |
Unicast with Packet Loss |
Simulate packet loss during unicast |
Target node may not receive the message |
11 |
Multicast with Congestion |
Send multicast during network congestion |
Message may be delayed or dropped |
12 |
Unicast with Congestion |
Send unicast during network congestion |
Message may be delayed or dropped |
13 |
Multicast with Firewall |
Send multicast with firewall blocking UDP |
Message is blocked |
14 |
Unicast with Firewall |
Send unicast with firewall blocking UDP |
Message is blocked |
15 |
Multicast with NAT |
Send multicast from behind NAT |
Message may not reach external nodes |
16 |
Unicast with NAT |
Send unicast from behind NAT |
Message may not reach external nodes |
17 |
Multicast with Valid Header |
Send multicast with valid message header |
Message is processed successfully |
18 |
Unicast with Valid Header |
Send unicast with valid message header |
Message is processed successfully |
19 |
Multicast with Invalid Header |
Send multicast with malformed header |
Message is ignored |
20 |
Unicast with Invalid Header |
Send unicast with malformed header |
Message is ignored |
21 |
Multicast with Large Payload |
Send multicast with large message payload |
Message is processed if within limits |
22 |
Unicast with Large Payload |
Send unicast with large message payload |
Message is processed if within limits |
23 |
Multicast with Empty Payload |
Send multicast with empty payload |
Message is ignored |
24 |
Unicast with Empty Payload |
Send unicast with empty payload |
Message is ignored |
25 |
Multicast with Special Characters |
Send multicast with special characters in name |
Message is processed if valid |
26 |
Unicast with Special Characters |
Send unicast with special characters in name |
Message is processed if valid |
27 |
Multicast with Unicode |
Send multicast with Unicode characters |
Message is processed if valid |
28 |
Unicast with Unicode |
Send unicast with Unicode characters |
Message is processed if valid |
29 |
Multicast with Repeated Messages |
Send repeated multicast messages |
All messages are processed |
30 |
Unicast with Repeated Messages |
Send repeated unicast messages |
All messages are processed |
31 |
Multicast with Delay |
Send multicast with intentional delay |
Message is received after delay |
32 |
Unicast with Delay |
Send unicast with intentional delay |
Message is received after delay |
33 |
Multicast with Broadcast Address |
Send multicast using broadcast address |
Message is received by all nodes |
34 |
Unicast with Broadcast Address |
Send unicast using broadcast address |
Message is not processed |
35 |
Multicast with Invalid Format |
Send multicast with invalid format |
Message is ignored |
36 |
Unicast with Invalid Format |
Send unicast with invalid format |
Message is ignored |
37 |
Multicast with Logging Enabled |
Enable logging during multicast |
Logs show multicast activity |
38 |
Unicast with Logging Enabled |
Enable logging during unicast |
Logs show unicast activity |
39 |
Multicast with Logging Disabled |
Disable logging during multicast |
No logs are generated |
40 |
Unicast with Logging Disabled |
Disable logging during unicast |
No logs are generated |
41 |
Multicast with Debug Mode |
Enable debug mode during multicast |
Detailed logs are generated |
42 |
Unicast with Debug Mode |
Enable debug mode during unicast |
Detailed logs are generated |
43 |
Multicast with Production Mode |
Send multicast in production mode |
Minimal logs and optimized performance |
44 |
Unicast with Production Mode |
Send unicast in production mode |
Minimal logs and optimized performance |
45 |
Multicast with Service Discovery |
Use multicast for service discovery |
All services respond with IS-AT |
46 |
Unicast with Service Discovery |
Use unicast for service discovery |
Targeted service responds with IS-AT |
47 |
Multicast with TTL Expiry |
Send multicast with short TTL and wait |
Message expires and is not received |
48 |
Unicast with TTL Expiry |
Send unicast with short TTL and wait |
Message is delivered before expiry |
49 |
Multicast with Invalid Encoding |
Send multicast with invalid encoding |
Message is ignored |
50 |
Unicast with Invalid Encoding |
Send unicast with invalid encoding |
Message is ignored |
Platform Agnostic - Testcases
Platform Agnostic - Test Cases |
|||
---|---|---|---|
# |
Test Case |
Description |
Expected Result |
1 |
Cross-Platform WHO-HAS |
Send WHO-HAS from Linux and receive on Windows |
IS-AT response is received on Windows |
2 |
Cross-Platform IS-AT |
Send IS-AT from Android and receive on iOS |
Service is discoverable on iOS |
3 |
Endian Compatibility |
Send messages from big-endian system to little-endian |
Messages are correctly interpreted |
4 |
Byte Order Consistency |
Verify byte order in message headers across platforms |
Headers are parsed correctly |
5 |
Multicast Support on All Platforms |
Send multicast WHO-HAS from Windows |
All platforms receive the message |
6 |
Unicast Support on All Platforms |
Send unicast IS-AT from Linux |
Target platform receives the message |
7 |
TTL Handling Across Platforms |
Send IS-AT with TTL from Android |
TTL is respected on all platforms |
8 |
Service Discovery on Mixed OS |
Advertise service on Linux, discover on Windows and Android |
Service is discovered on all platforms |
9 |
Unicode Name Advertisement |
Advertise Unicode name from iOS |
Name is correctly displayed on all platforms |
10 |
Special Characters in Names |
Advertise name with special characters from Windows |
Name is correctly parsed on all platforms |
11 |
Max Length Name Advertisement |
Advertise max length name from Linux |
Name is accepted and discoverable |
12 |
Invalid Name Format |
Send IS-AT with invalid name format from Android |
Message is ignored on all platforms |
13 |
TTL Expiry Handling |
Send IS-AT with short TTL from iOS |
Service is removed after TTL on all platforms |
14 |
Simultaneous Discovery |
Send WHO-HAS from multiple platforms |
All receive appropriate IS-AT responses |
15 |
Simultaneous Advertisement |
Send IS-AT from multiple platforms |
All services are discoverable |
16 |
Firewall Compatibility |
Send WHO-HAS through platform-specific firewall |
Message is received if firewall allows |
17 |
NAT Traversal |
Send IS-AT from behind NAT on Android |
Message reaches external platforms if NAT supports |
18 |
IPv6 Compatibility |
Send WHO-HAS over IPv6 from Linux |
All IPv6-capable platforms receive it |
19 |
IPv4 Compatibility |
Send IS-AT over IPv4 from Windows |
All IPv4-capable platforms receive it |
20 |
Mixed Protocol Stack |
Use different network stacks on platforms |
Messages are interoperable |
21 |
Platform-Specific Encoding |
Send IS-AT with UTF-8 encoding from iOS |
Correctly decoded on all platforms |
22 |
Platform-Specific Decoding |
Receive WHO-HAS with UTF-8 encoding on Android |
Correctly decoded |
23 |
Cross-Platform Logging |
Enable logging on all platforms |
Logs show consistent message flow |
24 |
Cross-Platform Debugging |
Enable debug mode on all platforms |
Debug output is consistent |
25 |
Platform-Specific Packet Size |
Send large IS-AT from Windows |
Message is accepted if within limits |
26 |
Platform-Specific Buffer Size |
Receive large WHO-HAS on Android |
Message is processed if buffer allows |
27 |
Platform-Specific Timeouts |
Send WHO-HAS and wait for IS-AT |
Timeout behavior is consistent |
28 |
Cross-Platform Service Removal |
Send IS-AT with TTL=0 from Linux |
Service is removed on all platforms |
29 |
Cross-Platform Service Update |
Send updated IS-AT from Android |
Service info is updated on all platforms |
30 |
Cross-Platform Service Refresh |
Re-advertise service before TTL expiry |
TTL is refreshed on all platforms |
31 |
Platform-Specific Network Stack |
Use BSD sockets on Unix and Winsock on Windows |
Messages are interoperable |
32 |
Cross-Platform Packet Loss Handling |
Simulate packet loss on Android |
System retries or logs error |
33 |
Cross-Platform Congestion Handling |
Send messages during congestion |
Messages are delayed or retried |
34 |
Cross-Platform Duplicate Handling |
Send duplicate IS-AT from iOS |
Only one entry is maintained |
35 |
Cross-Platform Wildcard WHO-HAS |
Send WHO-HAS with wildcard from Linux |
All matching services respond |
36 |
Cross-Platform Service Grouping |
Advertise grouped services from Android |
Groups are recognized on all platforms |
37 |
Cross-Platform Metadata Support |
Include metadata in IS-AT from Windows |
Metadata is parsed on all platforms |
38 |
Cross-Platform Versioning |
Include version info in IS-AT |
Version is recognized on all platforms |
39 |
Cross-Platform Priority Handling |
Advertise services with priority |
Priority is respected on all platforms |
40 |
Cross-Platform Header Validation |
Send IS-AT with valid header |
Header is validated on all platforms |
41 |
Cross-Platform Header Corruption |
Send IS-AT with corrupted header |
Message is ignored |
42 |
Cross-Platform Field Validation |
Send IS-AT with missing fields |
Message is ignored |
43 |
Cross-Platform Extra Fields |
Send IS-AT with extra fields |
Message is processed if valid |
44 |
Cross-Platform Service Conflict |
Advertise conflicting names |
Conflict is resolved or logged |
45 |
Cross-Platform Service Discovery Timeout |
Send WHO-HAS and wait |
Timeout is consistent across platforms |
46 |
Cross-Platform Service Cache |
Cache discovered services |
Cache is consistent across platforms |
47 |
Cross-Platform Service Expiry |
Wait for TTL expiry |
Service is removed from cache |
48 |
Cross-Platform Service Re-registration |
Re-advertise expired service |
Service is re-added to cache |
49 |
Cross-Platform Service Filtering |
Filter services by name |
Only matching services are shown |
50 |
Cross-Platform Service Logging |
Log service discovery events |
Logs are consistent across platforms |
No Central Server Required - Testcases
No Central Server Required - Test Cases |
|||
---|---|---|---|
# |
Test Case |
Description |
Expected Result |
1 |
Peer-to-Peer Discovery |
Verify that nodes can discover each other without a central server |
Nodes successfully discover each other |
2 |
Service Advertisement Without Server |
Advertise a service without any central registry |
Service is discoverable by other peers |
3 |
WHO-HAS Without Server |
Send WHO-HAS message in a decentralized network |
IS-AT response is received from matching peers |
4 |
IS-AT Without Server |
Send IS-AT message without central coordination |
Peers receive and cache the service info |
5 |
Multiple Peers Discovery |
Start multiple peers and verify mutual discovery |
All peers discover each other |
6 |
Peer Restart |
Restart a peer and verify rediscovery |
Peer is rediscovered by others |
7 |
Peer Join Late |
Start a new peer after others are running |
New peer discovers existing services |
8 |
Peer Leave |
Stop a peer and verify removal from discovery cache |
Peer is removed from cache after TTL |
9 |
TTL Expiry Without Server |
Verify TTL expiry works without central server |
Expired services are removed from cache |
10 |
Simultaneous Advertisements |
Multiple peers advertise services at the same time |
All services are discoverable |
11 |
Decentralized WHO-HAS Flood |
WHO-HAS messages are propagated without central routing |
All peers receive the message |
12 |
Decentralized IS-AT Propagation |
IS-AT messages are distributed without a central node |
All peers update their cache |
13 |
Peer-to-Peer TTL Refresh |
Refresh TTL from one peer to another |
TTL is extended in peer cache |
14 |
Peer-to-Peer TTL Expiry |
Allow TTL to expire naturally |
Service is removed from all caches |
15 |
Peer-to-Peer Conflict Resolution |
Two peers advertise same name |
Conflict is resolved or logged |
16 |
Peer-to-Peer Duplicate Detection |
Same service advertised twice |
Only one entry is maintained |
17 |
Peer-to-Peer Wildcard WHO-HAS |
WHO-HAS with wildcard name |
All matching services respond |
18 |
Peer-to-Peer Metadata Sharing |
Share metadata in IS-AT |
Metadata is received and parsed |
19 |
Peer-to-Peer Versioning |
Include version info in IS-AT |
Version is recognized by peers |
20 |
Peer-to-Peer Priority Handling |
Include priority in IS-AT |
Priority is respected |
21 |
Peer-to-Peer Logging |
Enable logs on all peers |
Logs show consistent discovery |
22 |
Peer-to-Peer Debugging |
Enable debug mode |
Detailed logs are generated |
23 |
Peer-to-Peer Packet Loss |
Simulate packet loss |
Discovery still works via retries |
24 |
Peer-to-Peer Congestion |
Simulate network congestion |
Messages are delayed but received |
25 |
Peer-to-Peer NAT Traversal |
Peer behind NAT advertises service |
External peers discover it if NAT allows |
26 |
Peer-to-Peer IPv6 Support |
Use IPv6 for discovery |
Peers discover each other |
27 |
Peer-to-Peer IPv4 Support |
Use IPv4 for discovery |
Peers discover each other |
28 |
Peer-to-Peer Mixed Stack |
Use different network stacks |
Messages are interoperable |
29 |
Peer-to-Peer Encoding |
Use UTF-8 encoding |
Messages are correctly parsed |
30 |
Peer-to-Peer Decoding |
Decode UTF-8 messages |
Messages are correctly interpreted |
31 |
Peer-to-Peer Service Removal |
Send IS-AT with TTL=0 |
Service is removed from all caches |
32 |
Peer-to-Peer Service Update |
Send updated IS-AT |
Cache is updated |
33 |
Peer-to-Peer Service Refresh |
Re-advertise before TTL expiry |
TTL is refreshed |
34 |
Peer-to-Peer Header Validation |
Validate IS-AT headers |
Headers are parsed correctly |
35 |
Peer-to-Peer Header Corruption |
Send corrupted IS-AT |
Message is ignored |
36 |
Peer-to-Peer Field Validation |
Send IS-AT with missing fields |
Message is ignored |
37 |
Peer-to-Peer Extra Fields |
Send IS-AT with extra fields |
Message is processed if valid |
38 |
Peer-to-Peer Service Filtering |
Filter services by name |
Only matching services are shown |
39 |
Peer-to-Peer Service Logging |
Log service discovery events |
Logs are consistent |
40 |
Peer-to-Peer Service Cache |
Cache discovered services |
Cache is consistent |
41 |
Peer-to-Peer Cache Expiry |
Wait for TTL to expire |
Service is removed |
42 |
Peer-to-Peer Re-registration |
Re-advertise expired service |
Service is re-added |
43 |
Peer-to-Peer Multicast WHO-HAS |
Send WHO-HAS via multicast |
All peers receive it |
44 |
Peer-to-Peer Unicast IS-AT |
Send IS-AT via unicast |
Target peer receives it |
45 |
Peer-to-Peer Broadcast WHO-HAS |
Send WHO-HAS via broadcast |
All peers receive it |
46 |
Peer-to-Peer Invalid Format |
Send malformed IS-AT |
Message is ignored |
47 |
Peer-to-Peer Empty Payload |
Send IS-AT with no names |
Message is ignored |
48 |
Peer-to-Peer Large Payload |
Send IS-AT with many names |
All names are processed |
49 |
Peer-to-Peer Special Characters |
Use special characters in names |
Names are parsed correctly |
50 |
Peer-to-Peer Unicode Names |
Use Unicode in service names |
Names are discoverable |
Dynamic Service Resolution - Testcases
Dynamic Service Resolution - Test Cases |
|||
---|---|---|---|
# |
Test Case |
Description |
Expected Result |
1 |
Dynamic Discovery on Startup |
Start a peer and dynamically discover available services |
All active services are discovered without manual configuration |
2 |
Service Joins After Startup |
Start a new service after peers are running |
Peers dynamically discover the new service |
3 |
Service Leaves Network |
Stop a service and observe resolution behavior |
Service is removed from discovery cache after TTL |
4 |
Service Rejoins Network |
Restart a previously stopped service |
Service is rediscovered dynamically |
5 |
Multiple Services Join |
Start multiple services simultaneously |
All services are dynamically resolved |
6 |
Service Name Change |
Change the name of an advertised service |
New name is resolved and old name is removed |
7 |
Service Metadata Update |
Update metadata of a service |
Updated metadata is reflected in resolution |
8 |
Service TTL Expiry |
Wait for TTL to expire |
Service is removed from resolution cache |
9 |
Service TTL Refresh |
Re-advertise service before TTL expiry |
TTL is refreshed and service remains discoverable |
10 |
Wildcard Service Query |
Query for services using wildcard |
All matching services are resolved |
11 |
Service Priority Resolution |
Advertise services with different priorities |
Higher priority services are resolved first |
12 |
Service Version Resolution |
Advertise services with version info |
Correct version is resolved based on query |
13 |
Service Group Resolution |
Group services and query by group |
All services in group are resolved |
14 |
Service Conflict Resolution |
Advertise conflicting service names |
Conflict is resolved and correct service is resolved |
15 |
Service Resolution with Delay |
Delay service advertisement |
Service is resolved after delay |
16 |
Service Resolution with Packet Loss |
Simulate packet loss during advertisement |
Service is resolved if retry succeeds |
17 |
Service Resolution with Congestion |
Simulate network congestion |
Resolution may be delayed but succeeds |
18 |
Service Resolution with NAT |
Advertise service behind NAT |
Service is resolved if NAT traversal is supported |
19 |
Service Resolution with Firewall |
Advertise service with firewall blocking UDP |
Service is not resolved |
20 |
Service Resolution with IPv6 |
Advertise service over IPv6 |
Service is resolved on IPv6-capable peers |
21 |
Service Resolution with IPv4 |
Advertise service over IPv4 |
Service is resolved on IPv4-capable peers |
22 |
Service Resolution with Unicode Name |
Advertise service with Unicode name |
Service is resolved correctly |
23 |
Service Resolution with Special Characters |
Advertise service with special characters |
Service is resolved if valid |
24 |
Service Resolution with Max Length Name |
Advertise service with max allowed name length |
Service is resolved |
25 |
Service Resolution with Invalid Name |
Advertise service with invalid name |
Service is not resolved |
26 |
Service Resolution with Duplicate Names |
Advertise duplicate service names |
Only one instance is resolved |
27 |
Service Resolution with TTL=0 |
Advertise service with TTL=0 |
Service is not resolved |
28 |
Service Resolution with Negative TTL |
Advertise service with negative TTL |
Service is ignored |
29 |
Service Resolution with Max TTL |
Advertise service with max TTL |
Service remains resolvable for full TTL |
30 |
Service Resolution with Invalid Format |
Advertise service with malformed IS-AT |
Service is not resolved |
31 |
Service Resolution with Extra Fields |
Advertise service with extra fields |
Service is resolved if fields are valid |
32 |
Service Resolution with Missing Fields |
Advertise service missing required fields |
Service is not resolved |
33 |
Service Resolution with Broadcast |
Advertise service using broadcast |
All peers resolve the service |
34 |
Service Resolution with Multicast |
Advertise service using multicast |
All listening peers resolve the service |
35 |
Service Resolution with Unicast |
Advertise service using unicast |
Only targeted peer resolves the service |
36 |
Service Resolution with Logging Enabled |
Enable logging during resolution |
Logs show resolution activity |
37 |
Service Resolution with Logging Disabled |
Disable logging during resolution |
No logs are generated |
38 |
Service Resolution with Debug Mode |
Enable debug mode during resolution |
Detailed logs are generated |
39 |
Service Resolution with Production Mode |
Use production mode during resolution |
Minimal logs and optimized performance |
40 |
Service Resolution with High Frequency |
Advertise services at high frequency |
Resolution system handles or throttles |
41 |
Service Resolution with Low Frequency |
Advertise services at low frequency |
Service remains resolvable if TTL is sufficient |
42 |
Service Resolution with Service Removal |
Send IS-AT with TTL=0 to remove service |
Service is removed from resolution cache |
43 |
Service Resolution with Service Update |
Send IS-AT with updated service info |
Service info is updated in resolution cache |
44 |
Service Resolution with Service Re-registration |
Re-advertise expired service |
Service is re-added to resolution cache |
45 |
Service Resolution with Service Filtering |
Filter services by name or group |
Only matching services are resolved |
46 |
Service Resolution with Service Caching |
Cache resolved services |
Cache is updated dynamically |
47 |
Service Resolution with Service Expiry |
Wait for service TTL to expire |
Service is removed from cache |
48 |
Service Resolution with Platform Interoperability |
Resolve services across platforms |
Services are resolved regardless of OS |
49 |
Service Resolution with Network Interface Change |
Change network interface during resolution |
Resolution adapts to new interface |
50 |
Service Resolution with Simultaneous Queries |
Send multiple WHO-HAS queries |
All matching services are resolved |
Integration with AllJoyn Router - Testcases
Integration with AllJoyn Router - Test Cases |
|||
---|---|---|---|
# |
Test Case |
Description |
Expected Result |
1 |
Start AllJoyn Router |
Verify NS protocol initialization |
NS protocol initializes successfully |
2 |
WHO-HAS via Router |
Send WHO-HAS through AllJoyn Router |
Router forwards WHO-HAS to appropriate peers |
3 |
IS-AT via Router |
Send IS-AT through AllJoyn Router |
Router broadcasts IS-AT to all listening peers |
4 |
Service Discovery |
Verify service discovery via router |
Service is discovered through router mediation |
5 |
Router Restart |
Restart router and verify NS recovery |
NS protocol resumes and reinitializes |
6 |
Advertise with Router Active |
Advertise service with router active |
Service is advertised and discoverable |
7 |
Advertise with Router Inactive |
Advertise service with router inactive |
Service is not discoverable |
8 |
WHO-HAS with Filtering |
Send WHO-HAS with router filtering enabled |
Router filters and forwards WHO-HAS correctly |
9 |
IS-AT with Filtering |
Send IS-AT with router filtering enabled |
Router filters and forwards IS-AT correctly |
10 |
TTL Expiry |
Verify TTL expiry managed by router |
Router removes expired services from cache |
11 |
Malformed WHO-HAS |
Send WHO-HAS with malformed header via router |
Router drops malformed message |
12 |
Malformed IS-AT |
Send IS-AT with malformed payload via router |
Router logs and drops message |
13 |
WHO-HAS Logging |
Verify router logs WHO-HAS traffic |
WHO-HAS messages are logged |
14 |
IS-AT Logging |
Verify router logs IS-AT traffic |
IS-AT messages are logged |
15 |
Wildcard WHO-HAS |
Send WHO-HAS with wildcard via router |
Router forwards to all matching services |
16 |
Multiple Names in IS-AT |
Send IS-AT with multiple names via router |
Router registers all names |
17 |
Duplicate IS-AT |
Verify router handles duplicate IS-AT |
Only one entry is maintained |
18 |
Duplicate WHO-HAS |
Verify router handles duplicate WHO-HAS |
Message is processed once |
19 |
Congestion WHO-HAS |
Send WHO-HAS during router congestion |
Message is delayed or dropped |
20 |
Congestion IS-AT |
Send IS-AT during router congestion |
Message is delayed or dropped |
21 |
NAT Traversal WHO-HAS |
Send WHO-HAS with router NAT traversal |
Router forwards message across NAT |
22 |
NAT Traversal IS-AT |
Send IS-AT with router NAT traversal |
Router forwards message across NAT |
23 |
IPv6 WHO-HAS |
Verify router supports IPv6 WHO-HAS |
WHO-HAS is forwarded over IPv6 |
24 |
IPv6 IS-AT |
Verify router supports IPv6 IS-AT |
IS-AT is forwarded over IPv6 |
25 |
Debug WHO-HAS |
Send WHO-HAS with router debug mode |
Detailed logs are generated |
26 |
Debug IS-AT |
Send IS-AT with router debug mode |
Detailed logs are generated |
27 |
Logging Disabled WHO-HAS |
Send WHO-HAS with router logging disabled |
No logs are generated |
28 |
Logging Disabled IS-AT |
Send IS-AT with router logging disabled |
No logs are generated |
29 |
Production Mode WHO-HAS |
Send WHO-HAS with router in production mode |
Minimal logs and optimized performance |
30 |
Production Mode IS-AT |
Send IS-AT with router in production mode |
Minimal logs and optimized performance |
31 |
Service Removal |
Verify router handles service removal |
Service is removed from cache |
32 |
Service Update |
Verify router handles service update |
Service info is updated |
33 |
Service Refresh |
Verify router handles service refresh |
TTL is refreshed |
34 |
Invalid Encoding WHO-HAS |
Send WHO-HAS with invalid encoding via router |
Message is dropped |
35 |
Invalid Encoding IS-AT |
Send IS-AT with invalid encoding via router |
Message is dropped |
36 |
UTF-8 WHO-HAS |
Send WHO-HAS with UTF-8 encoding via router |
Message is processed |
37 |
UTF-8 IS-AT |
Send IS-AT with UTF-8 encoding via router |
Message is processed |
38 |
Special Characters WHO-HAS |
Send WHO-HAS with special characters via router |
Message is parsed correctly |
39 |
Special Characters IS-AT |
Send IS-AT with special characters via router |
Message is parsed correctly |
40 |
Unicode WHO-HAS |
Send WHO-HAS with Unicode via router |
Message is parsed correctly |
41 |
Unicode IS-AT |
Send IS-AT with Unicode via router |
Message is parsed correctly |
42 |
Large WHO-HAS Payload |
Verify router handles large WHO-HAS payload |
Message is processed if within limits |
43 |
Large IS-AT Payload |
Verify router handles large IS-AT payload |
Message is processed if within limits |
44 |
Empty WHO-HAS Payload |
Send WHO-HAS with empty payload via router |
Message is ignored |
45 |
Empty IS-AT Payload |
Send IS-AT with empty payload via router |
Message is ignored |
46 |
Broadcast WHO-HAS |
Send WHO-HAS with broadcast via router |
All peers receive the message |
47 |
Broadcast IS-AT |
Send IS-AT with broadcast via router |
All peers receive the message |
48 |
Service Conflict |
Verify router handles service conflict |
Conflict is resolved or logged |
49 |
Service Grouping |
Verify router handles service grouping |
Groups are registered if supported |
50 |
Metadata and Versioning |
Verify router handles metadata and versioning in IS-AT |
Metadata and version are parsed and stored |
Reference links