/* Ċ Ġ* ĠUnless Ġexplicitly Ġstated Ġotherwise Ġall Ġfiles Ġin Ġthis Ġrepository Ġare Ġlicensed Ġunder Ġthe ĠApache ĠLicense ĠVersion Ġ 2 . 0 . Ċ Ġ* ĠThis Ġproduct Ġincludes Ġsoftware Ġdeveloped Ġat ĠDat adog Ġ( https :// www . datadog hq . com /). Ċ Ġ* ĠCopyright Ġ 2 0 1 6 - Present ĠDat adog , ĠInc . Ċ Ġ*/ Ċ Ċ package Ġcom . datadog . android . nightly . trace Ċ Ċ import Ġandroidx . test . ext . junit . runners . Android JUnit 4 Ċ import Ġandroidx . test . filters . Large Test Ċ import Ġandroidx . test . platform . app . Instrumentation Registry Ċ import Ġcom . datadog . android . nightly . SPECIAL _ BOOLEAN _ TAG _ NAME Ċ import Ġcom . datadog . android . nightly . SPECIAL _ DOUBLE _ TAG _ NAME Ċ import Ġcom . datadog . android . nightly . SPECIAL _ GENERIC _ TAG _ NAME Ċ import Ġcom . datadog . android . nightly . SPECIAL _ NUMBER _ TAG _ NAME Ċ import Ġcom . datadog . android . nightly . SPECIAL _ STRING _ TAG _ NAME Ċ import Ġcom . datadog . android . nightly . TEST _ METHOD _ NAME _ KEY Ċ import Ġcom . datadog . android . nightly . rules . Night ly Test Rule Ċ import Ġcom . datadog . android . nightly . utils . initialize Sdk Ċ import Ġcom . datadog . android . nightly . utils . measure Ċ import Ġfr . xg ou chet . el my r . junit 4 . Forge Rule Ċ import Ġio . op entr acing . tag . String Tag Ċ import Ġio . op entr acing . util . Global Tracer Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ Ċ @ RunWith ( Android JUnit 4 :: class ) Ċ @ Large Test Ċ class ĠSpan E 2 E Tests Ġ{ ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġfor ge Ġ= ĠFor ge Rule () ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġnightly Test Rule Ġ= ĠNight ly Test Rule () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġapi Method Signature : Ġcom . datadog . android . Dat adog # fun Ġinitialize ( android . content . Context , Ġcom . datadog . android . core . configuration . Credentials , Ġcom . datadog . android . core . configuration . Configuration , Ġcom . datadog . android . privacy . Tracking Consent ) ĊĠĠĠĠ Ġ* Ġapi Method Signature : Ġcom . datadog . android . core . configuration . Configuration $ Builder # fun Ġbuild (): ĠConfiguration ĊĠĠĠĠ Ġ* Ġapi Method Signature : Ġcom . datadog . android . core . configuration . Configuration $ Builder # constructor ( Boolean , ĠBoolean , ĠBoolean , ĠBoolean ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġinitialize Sdk ( Instrumentation Registry . get Instrumentation (). target Context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġapi Method Signature : Ġio . op entr acing . Span # fun Ġset Operation Name ( String ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtrace _ span _ set _ operation _ name () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġthis Ġwill Ġalso Ġtest Ġthe Ġexistence Ġof Ġthe Ġspan Ġitself ĊĠĠĠĠĠĠĠ Ġval Ġtest MethodName Ġ= Ġ" trace _ span _ set _ operation _ name " ĊĠĠĠĠĠĠĠ Ġval Ġtracer Ġ= ĠGlobal Tracer . get () ĊĠĠĠĠĠĠĠ Ġval Ġspan Ġ= Ġtracer . build Span (" random ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. start () ĊĠĠĠĠĠĠĠ Ġmeasure ( test MethodName ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspan . set Operation Name ( test MethodName ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġspan . finish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġapi Method Signature : Ġio . op entr acing . Span # fun Ġset Tag ( String , ĠBoolean ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtrace _ span _ set _ tag _ boolean () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtest MethodName Ġ= Ġ" trace _ span _ set _ tag _ boolean " ĊĠĠĠĠĠĠĠ Ġval Ġspan Ġ= ĠGlobal Tracer . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build Span ( test MethodName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. start () ĊĠĠĠĠĠĠĠ Ġval Ġtag Value Ġ= Ġfor ge . a Bool () ĊĠĠĠĠĠĠĠ Ġmeasure ( test MethodName ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspan . setTag ( SPECIAL _ BOOLEAN _ TAG _ NAME , Ġtag Value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġspan . finish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġapi Method Signature : Ġio . op entr acing . Span # fun Ġset Tag ( String , ĠString ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtrace _ span _ set _ tag _ string () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtest MethodName Ġ= Ġ" trace _ span _ set _ tag _ string " ĊĠĠĠĠĠĠĠ Ġval Ġspan Ġ= ĠGlobal Tracer . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build Span ( test MethodName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. start () ĊĠĠĠĠĠĠĠ Ġval Ġtag Value Ġ= Ġ" str ${ forge . an Alpha Num erical String () }" ĊĠĠĠĠĠĠĠ Ġmeasure ( test MethodName ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspan . setTag ( SPECIAL _ STRING _ TAG _ NAME , Ġtag Value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġspan . finish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġapi Method Signature : Ġio . op entr acing . Span # fun Ġset Tag ( String , ĠNumber ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtrace _ span _ set _ tag _ number () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtest MethodName Ġ= Ġ" trace _ span _ set _ tag _ number " ĊĠĠĠĠĠĠĠ Ġval Ġspan Ġ= ĠGlobal Tracer . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build Span ( test MethodName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. start () ĊĠĠĠĠĠĠĠ Ġval Ġtag Value Ġ= Ġfor ge . an Element From ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor ge . a Long ( 1 , Ġ 1 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor ge . an Int ( 1 , Ġ 1 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor ge . a Float ( 1 f , Ġ 1 0 f ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor ge . a Double ( 1 . 0 , Ġ 1 0 . 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor ge . an Int ( 1 , Ġ 1 0 ). to Byte () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġmeasure ( test MethodName ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspan . setTag ( SPECIAL _ NUMBER _ TAG _ NAME , Ġtag Value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġspan . finish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġapi Method Signature : Ġio . op entr acing . Span # fun Ġ< T > setTag ( Tag < T >, ĠT ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtrace _ span _ set _ tag _ generic () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtest MethodName Ġ= Ġ" trace _ span _ set _ tag _ generic " ĊĠĠĠĠĠĠĠ Ġval Ġspan Ġ= ĠGlobal Tracer . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build Span ( test MethodName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. start () ĊĠĠĠĠĠĠĠ Ġval Ġtag Value Ġ= Ġ" str ${ forge . an Alpha Num erical String () }" ĊĠĠĠĠĠĠĠ Ġmeasure ( test MethodName ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspan . setTag ( String Tag ( SPECIAL _ GENERIC _ TAG _ NAME ), Ġtag Value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġspan . finish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġapi Method Signature : Ġio . op entr acing . Span # fun Ġset Bag gage Item ( String , ĠString ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtrace _ span _ set _ bag gage _ item () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtest MethodName Ġ= Ġ" trace _ span _ set _ bag gage _ item " ĊĠĠĠĠĠĠĠ Ġval Ġspan Ġ= ĠGlobal Tracer . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build Span ( test MethodName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. start () ĊĠĠĠĠĠĠĠ Ġval Ġb agg age Ġ= Ġ" str ${ forge . an Alpha Num erical String () }" ĊĠĠĠĠĠĠĠ Ġmeasure ( test MethodName ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspan . set Bag gage Item ( SPECIAL _ STRING _ TAG _ NAME , Ġb agg age ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġspan . finish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġapi Method Signature : Ġio . op entr acing . Span # fun Ġlog ( Map ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtrace _ span _ log _ map () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtest MethodName Ġ= Ġ" trace _ span _ log _ map " ĊĠĠĠĠĠĠĠ Ġval Ġspan Ġ= ĠGlobal Tracer . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build Span ( test MethodName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. start () ĊĠĠĠĠĠĠĠ Ġval Ġlog Value Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ SPECIAL _ NUMBER _ TAG _ NAME }_ positive " Ġto Ġfor ge . a Small Int (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ SPECIAL _ NUMBER _ TAG _ NAME }_ negative " Ġto Ġ- forge . a Small Int (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSPECIAL _ DOUBLE _ TAG _ NAME Ġto Ġfor ge . a Double ( min Ġ= Ġ 1 . 0 , Ġmax Ġ= Ġ 1 0 . 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTEST _ METHOD _ NAME _ KEY Ġto Ġtest MethodName ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġmeasure ( test MethodName ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspan . log ( log Value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġspan . finish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġapi Method Signature : Ġio . op entr acing . Span # fun Ġlog ( String ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtrace _ span _ log _ string () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtest MethodName Ġ= Ġ" trace _ span _ log _ string " ĊĠĠĠĠĠĠĠ Ġval Ġspan Ġ= ĠGlobal Tracer . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build Span ( test MethodName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. start () ĊĠĠĠĠĠĠĠ Ġval Ġlog Value Ġ= Ġ"${ test MethodName }_ str ${ forge . an Alpha Num erical String () }" ĊĠĠĠĠĠĠĠ Ġmeasure ( test MethodName ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspan . log ( log Value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġspan . finish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġapi Method Signature : Ġio . op entr acing . Span # fun Ġlog ( long , ĠMap ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtrace _ span _ log _ timestamp _ map () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtest MethodName Ġ= Ġ" trace _ span _ log _ timestamp _ map " ĊĠĠĠĠĠĠĠ Ġval Ġspan Ġ= ĠGlobal Tracer . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build Span ( test MethodName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. start () ĊĠĠĠĠĠĠĠ Ġval Ġtimestamp Micro s Ġ= ĠSystem . currentTimeMillis () Ġ* Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠ Ġval Ġlog Value Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ SPECIAL _ NUMBER _ TAG _ NAME }_ positive " Ġto Ġfor ge . a Small Int (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ SPECIAL _ NUMBER _ TAG _ NAME }_ negative " Ġto Ġ- forge . a Small Int (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSPECIAL _ DOUBLE _ TAG _ NAME Ġto Ġfor ge . a Double ( min Ġ= Ġ 1 . 0 , Ġmax Ġ= Ġ 1 0 . 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTEST _ METHOD _ NAME _ KEY Ġto Ġtest MethodName ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġmeasure ( test MethodName ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspan . log ( timestamp Micro s , Ġlog Value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġspan . finish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġapi Method Signature : Ġio . op entr acing . Span # fun Ġlog ( long , ĠString ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtrace _ span _ log _ timestamp _ string () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtest MethodName Ġ= Ġ" trace _ span _ log _ timestamp _ string " ĊĠĠĠĠĠĠĠ Ġval Ġspan Ġ= ĠGlobal Tracer . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build Span ( test MethodName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. start () ĊĠĠĠĠĠĠĠ Ġval Ġtimestamp Micro s Ġ= ĠSystem . currentTimeMillis () Ġ* Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠ Ġval Ġlog Value Ġ= Ġ"${ test MethodName }_ str ${ forge . an Alpha Num erical String () }" ĊĠĠĠĠĠĠĠ Ġmeasure ( test MethodName ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspan . log ( timestamp Micro s , Ġlog Value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġspan . finish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġapi Method Signature : Ġio . op entr acing . Span # fun Ġfinish () ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtrace _ span _ finish () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtest MethodName Ġ= Ġ" trace _ span _ finish " ĊĠĠĠĠĠĠĠ Ġval Ġspan Ġ= ĠGlobal Tracer . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build Span ( test MethodName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. start () ĊĠĠĠĠĠĠĠ Ġmeasure ( test MethodName ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspan . finish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ