99import static org .junit .Assert .assertTrue ;
1010
1111import android .content .Context ;
12+
1213import androidx .test .platform .app .InstrumentationRegistry ;
1314import androidx .test .ext .junit .runners .AndroidJUnit4 ;
1415
@@ -340,6 +341,59 @@ public void onEvent(EventsResult result) {
340341 //assertEquals(1, backtraceClient.metrics.getSummedEvents().size());
341342 }
342343
344+ @ Test
345+ public void shouldAllowToOverrideUniqueEventName () {
346+ final Waiter waiter = new Waiter ();
347+ final String uniqueEventAttributeName = "uniqueEventAttributeName" ;
348+ final String uniqueEventAttributeValue = "SomeRandomText123123" ;
349+
350+ MockRequestHandler mockUniqueRequestHandler = new MockRequestHandler ();
351+ backtraceClient .metrics .setUniqueEventsRequestHandler (mockUniqueRequestHandler );
352+ MockRequestHandler mockSummedRequestHandler = new MockRequestHandler ();
353+ backtraceClient .metrics .setSummedEventsRequestHandler (mockSummedRequestHandler );
354+ backtraceClient .attributes .put (uniqueEventAttributeName , uniqueEventAttributeValue );
355+
356+ backtraceClient .metrics .setUniqueEventsOnServerResponse (new EventsOnServerResponseEventListener () {
357+ @ Override
358+ public void onEvent (EventsResult result ) {
359+ assertEquals (0 , result .getEventsPayload ().getDroppedEvents ());
360+ String eventsPayloadJsonString = BacktraceSerializeHelper .toJson (result .getEventsPayload ());
361+ assertNotEquals (0 , eventsPayloadJsonString .length ());
362+
363+ JSONObject json ;
364+ try {
365+ json = new JSONObject (eventsPayloadJsonString );
366+ JSONObject uniqueEventJson = json .getJSONArray ("unique_events" ).getJSONObject (0 );
367+ assertEquals (uniqueEventAttributeName , uniqueEventJson .getJSONArray ("unique" ).get (0 ));
368+ assertNotNull (uniqueEventJson .getJSONObject ("attributes" ).getString ("guid" ));
369+ } catch (Exception e ) {
370+ fail (e .toString ());
371+ }
372+
373+ assertEquals (BacktraceResultStatus .Ok , result .status );
374+ waiter .resume ();
375+ }
376+ });
377+
378+ backtraceClient .metrics .setSummedEventsOnServerResponse (new EventsOnServerResponseEventListener () {
379+ @ Override
380+ public void onEvent (EventsResult result ) {
381+ waiter .resume ();
382+ }
383+ });
384+ backtraceClient .metrics .enable (new BacktraceMetricsSettings (credentials , defaultBaseUrl , 0 ), uniqueEventAttributeName );
385+
386+ try {
387+ waiter .await (5 , TimeUnit .SECONDS , 2 );
388+ } catch (Exception e ) {
389+ fail (e .toString ());
390+ }
391+
392+ assertFalse (mockUniqueRequestHandler .lastEventPayloadJson .isEmpty ());
393+ assertEquals (1 , mockUniqueRequestHandler .numAttempts );
394+ assertEquals (1 , backtraceClient .metrics .getUniqueEvents ().size ());
395+ }
396+
343397 @ Test
344398 public void sendStartupEvent () {
345399 final Waiter waiter = new Waiter ();
@@ -391,6 +445,7 @@ public void onEvent(EventsResult result) {
391445
392446 backtraceClient .metrics .enable (new BacktraceMetricsSettings (credentials , defaultBaseUrl , 0 ));
393447
448+
394449 try {
395450 waiter .await (5 , TimeUnit .SECONDS , 2 );
396451 } catch (Exception e ) {
@@ -406,6 +461,7 @@ public void onEvent(EventsResult result) {
406461 assertEquals (0 , backtraceClient .metrics .getSummedEvents ().size ());
407462 }
408463
464+
409465 @ Test
410466 public void metricsAttributesShouldChangeIfClientAttributeChanges () {
411467 final Waiter waiter = new Waiter ();
0 commit comments