Use a single SharedLog for all mdns components
Use a single SharedLog in NsdService, and making subcomponents
for DiscoveryManager/Advertiser/SocketProvider. Because each
logger has 500 maxRecords, so 2000 records in total, which take
too much memory.
Also address leftover comments in previous logging changes.
Before:
2023-04-17T15:05:27.409895 - [Client10082-1] Register a DiscoveryListener 3 for service type:_nmt274981618._tcp.local
2023-04-17T15:05:26.408015 - [Client10082-1] New client. useJavaBackend=true
Advertiser:
2023-04-17T15:05:27.213023 - [testtap0] Probing finished for service 2
2023-04-17T15:05:26.409607 - Adding service name: ^Nsd.Test|Non-#AsCiI\Characters&\ufffe テスト 測試, type: _nmt274981618._tcp, hostAddresses: , port: 12345, network: null, txtRecord: with ID 2
DiscoveryManager:
2023-04-17T15:05:28.227786 - [_nmt274981618._tcp.local-102] onServiceNameDiscovered: ^Nsd.Test|Non-#AsCiI\Characters&\ufffe テスト 測試
2023-04-17T15:05:27.409104 - createServiceTypeClient for serviceType:_nmt274981618._tcp.local network:102
2023-04-17T15:05:27.398075 - Registering listener for serviceType: _nmt274981618._tcp.local
SocketProvider:
2023-04-17T15:05:28.292106 - Remove socket on net:102
2023-04-17T15:05:26.441517 - Create socket on net:NetworkAsKey{ network=102 }, ifName:testtap0
2023-04-17T15:05:26.409005 - Start monitoring sockets.
After:
Logs:
2023-04-17T20:51:42.931769 - [MdnsDiscoveryManager._nmt682015268._tcp.local-101] onServiceNameDiscovered: Name: ^Nsd.Test|Non-#AsCiI\Characters&\ufffe テスト 測試, type: _nmt682015268._tcp.local, subtypes: , ip: [100.70.162.138], ipv6: [fe80::9c0e:d0ff:fe7d:e5aa, 2a00:79e1:abc:6f04:9c0e:d0ff:fe7d:e5aa, 2a00:79e1:abc:6f04:eb56:8e39:5e1f:1102], port: 12345, interfaceIndex: 47, network: 101, textStrings: [], textEntries: []
2023-04-17T20:51:42.032465 - [NsdService.Client10082-1] Register a DiscoveryListener 3 for service type:_nmt682015268._tcp.local
2023-04-17T20:51:42.026645 - [MdnsDiscoveryManager] createServiceTypeClient for type:_nmt682015268._tcp.local, net:101
2023-04-17T20:51:41.091555 - [MdnsAdvertiser] Adding service name: ^Nsd.Test|Non-#AsCiI\Characters&\ufffe テスト 測試, type: _nmt682015268._tcp, hostAddresses: , port: 12345, network: null, txtRecord: with ID 2
2023-04-17T20:51:41.091037 - [MdnsSocketProvider] Start monitoring sockets.
2023-04-17T20:51:41.089951 - [NsdService.Client10082-1] New client. useJavaBackend=true
Bug: 275004614
Test: atest FrameworksNetTests android.net.cts.NsdManagerTest
Change-Id: I1c9b7697cc95748f7fe4e6beecea217d39c56fb1
This commit is contained in:
@@ -142,6 +142,7 @@ public class NsdService extends INsdManager.Stub {
|
||||
public static final boolean DBG = Log.isLoggable(TAG, Log.DEBUG);
|
||||
private static final long CLEANUP_DELAY_MS = 10000;
|
||||
private static final int IFACE_IDX_ANY = 0;
|
||||
private static final SharedLog LOGGER = new SharedLog("serviceDiscovery");
|
||||
|
||||
private final Context mContext;
|
||||
private final NsdStateMachine mNsdStateMachine;
|
||||
@@ -157,7 +158,7 @@ public class NsdService extends INsdManager.Stub {
|
||||
private final MdnsSocketProvider mMdnsSocketProvider;
|
||||
@NonNull
|
||||
private final MdnsAdvertiser mAdvertiser;
|
||||
private final SharedLog mServiceLogs = new SharedLog(TAG);
|
||||
private final SharedLog mServiceLogs = LOGGER.forSubComponent(TAG);
|
||||
// WARNING : Accessing these values in any thread is not safe, it must only be changed in the
|
||||
// state machine thread. If change this outside state machine, it will need to introduce
|
||||
// synchronization.
|
||||
@@ -1326,17 +1327,18 @@ public class NsdService extends INsdManager.Stub {
|
||||
mMDnsEventCallback = new MDnsEventCallback(mNsdStateMachine);
|
||||
mDeps = deps;
|
||||
|
||||
mMdnsSocketProvider = deps.makeMdnsSocketProvider(ctx, handler.getLooper());
|
||||
mMdnsSocketProvider = deps.makeMdnsSocketProvider(ctx, handler.getLooper(),
|
||||
LOGGER.forSubComponent("MdnsSocketProvider"));
|
||||
// Netlink monitor starts on boot, and intentionally never stopped, to ensure that all
|
||||
// address events are received.
|
||||
handler.post(mMdnsSocketProvider::startNetLinkMonitor);
|
||||
mMdnsSocketClient =
|
||||
new MdnsMultinetworkSocketClient(handler.getLooper(), mMdnsSocketProvider);
|
||||
mMdnsDiscoveryManager =
|
||||
deps.makeMdnsDiscoveryManager(new ExecutorProvider(), mMdnsSocketClient);
|
||||
mMdnsDiscoveryManager = deps.makeMdnsDiscoveryManager(new ExecutorProvider(),
|
||||
mMdnsSocketClient, LOGGER.forSubComponent("MdnsDiscoveryManager"));
|
||||
handler.post(() -> mMdnsSocketClient.setCallback(mMdnsDiscoveryManager));
|
||||
mAdvertiser = deps.makeMdnsAdvertiser(handler.getLooper(), mMdnsSocketProvider,
|
||||
new AdvertiserCallback());
|
||||
new AdvertiserCallback(), LOGGER.forSubComponent("MdnsAdvertiser"));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1390,8 +1392,9 @@ public class NsdService extends INsdManager.Stub {
|
||||
* @see MdnsDiscoveryManager
|
||||
*/
|
||||
public MdnsDiscoveryManager makeMdnsDiscoveryManager(
|
||||
ExecutorProvider executorProvider, MdnsSocketClientBase socketClient) {
|
||||
return new MdnsDiscoveryManager(executorProvider, socketClient);
|
||||
@NonNull ExecutorProvider executorProvider,
|
||||
@NonNull MdnsSocketClientBase socketClient, @NonNull SharedLog sharedLog) {
|
||||
return new MdnsDiscoveryManager(executorProvider, socketClient, sharedLog);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1399,15 +1402,16 @@ public class NsdService extends INsdManager.Stub {
|
||||
*/
|
||||
public MdnsAdvertiser makeMdnsAdvertiser(
|
||||
@NonNull Looper looper, @NonNull MdnsSocketProvider socketProvider,
|
||||
@NonNull MdnsAdvertiser.AdvertiserCallback cb) {
|
||||
return new MdnsAdvertiser(looper, socketProvider, cb);
|
||||
@NonNull MdnsAdvertiser.AdvertiserCallback cb, @NonNull SharedLog sharedLog) {
|
||||
return new MdnsAdvertiser(looper, socketProvider, cb, sharedLog);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see MdnsSocketProvider
|
||||
*/
|
||||
public MdnsSocketProvider makeMdnsSocketProvider(Context context, Looper looper) {
|
||||
return new MdnsSocketProvider(context, looper);
|
||||
public MdnsSocketProvider makeMdnsSocketProvider(@NonNull Context context,
|
||||
@NonNull Looper looper, @NonNull SharedLog sharedLog) {
|
||||
return new MdnsSocketProvider(context, looper, sharedLog);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1769,30 +1773,10 @@ public class NsdService extends INsdManager.Stub {
|
||||
|
||||
// Dump service and clients logs
|
||||
pw.println();
|
||||
pw.println("Logs:");
|
||||
pw.increaseIndent();
|
||||
mServiceLogs.reverseDump(pw);
|
||||
pw.decreaseIndent();
|
||||
|
||||
// Dump advertiser related logs
|
||||
pw.println();
|
||||
pw.println("Advertiser:");
|
||||
pw.increaseIndent();
|
||||
mAdvertiser.dump(pw);
|
||||
pw.decreaseIndent();
|
||||
|
||||
// Dump discoverymanager related logs
|
||||
pw.println();
|
||||
pw.println("DiscoveryManager:");
|
||||
pw.increaseIndent();
|
||||
mMdnsDiscoveryManager.dump(pw);
|
||||
pw.decreaseIndent();
|
||||
|
||||
// Dump socketprovider related logs
|
||||
pw.println();
|
||||
pw.println("SocketProvider:");
|
||||
pw.increaseIndent();
|
||||
mMdnsSocketProvider.dump(pw);
|
||||
pw.decreaseIndent();
|
||||
}
|
||||
|
||||
private abstract static class ClientRequest {
|
||||
|
||||
Reference in New Issue
Block a user