Skip to content

Conversation

@jmsnll
Copy link
Contributor

@jmsnll jmsnll commented Sep 18, 2023

Description:

Exposes the duration of generated spans as a command line parameter. It uses a DurationVar flag so units can be easily provided and are automatically applied.

Example usage:

telemetrygen traces --traces 100 --otlp-insecure --span-duration 10ns # nanoseconds
telemetrygen traces --traces 100 --otlp-insecure --span-duration 10us # microseconds
telemetrygen traces --traces 100 --otlp-insecure --span-duration 10ms # milliseconds
telemetrygen traces --traces 100 --otlp-insecure --span-duration 10s # seconds

Testing:

Ran without the argument provided telemetrygen traces --traces 1 --otlp-insecure and seen spans publishing with the default value.

Ran again with the argument provided: telemetrygen traces --traces 1 --otlp-insecure --span-duration 1s

And observed the expected output:

Resource SchemaURL: 
Resource attributes:
     -> service.name: Str(telemetrygen)
ScopeSpans #0
ScopeSpans SchemaURL: 
InstrumentationScope telemetrygen 
Span #0
    Trace ID       : 9718172ff37b17389089b99667ae9522
    Parent ID      : 4eb33cd3ed81dc3e
    ID             : 2d768f6dbde63e7c
    Name           : okey-dokey
    Kind           : Server
    Start time     : 2023-09-18 23:33:18.111136 +0000 UTC   <----
    End time       : 2023-09-18 23:33:19.111136 +0000 UTC   <----
    Status code    : Unset
    Status message : 
Attributes:
     -> net.peer.ip: Str(1.2.3.4)
     -> peer.service: Str(telemetrygen-client)
Span #1
    Trace ID       : 9718172ff37b17389089b99667ae9522
    Parent ID      : 
    ID             : 4eb33cd3ed81dc3e
    Name           : lets-go
    Kind           : Client
    Start time     : 2023-09-18 23:33:18.111136 +0000 UTC   <----
    End time       : 2023-09-18 23:33:19.111136 +0000 UTC   <----
    Status code    : Unset
    Status message : 
Attributes:
     -> net.peer.ip: Str(1.2.3.4)
     -> peer.service: Str(telemetrygen-server)
        {"kind": "exporter", "data_type": "traces", "name": "logging"}

Documentation: No documentation added.

@jmsnll jmsnll requested a review from a team September 18, 2023 23:41
@github-actions github-actions bot added the cmd/telemetrygen telemetrygen command label Sep 18, 2023
@jmsnll jmsnll force-pushed the feat/random-fake-span-durations branch from 3dd0039 to 9ef99c7 Compare September 19, 2023 13:47
Copy link
Member

@jpkrohling jpkrohling left a comment

Choose a reason for hiding this comment

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

I think we have tests that could be used to exercise this. Can you double-check and add one accordingly?

- previous approach depended on a second call of `time.Now()` which differed in value from the spans start time and introduced variance to the duration
- both start and end times are now set for both parent and child spans
- added test to ensure start and end times match the duration provided exactly
@jmsnll jmsnll force-pushed the feat/random-fake-span-durations branch from 7524e54 to e8099c3 Compare September 20, 2023 13:28
@jmsnll
Copy link
Contributor Author

jmsnll commented Sep 20, 2023

I think we have tests that could be used to exercise this. Can you double-check and add one accordingly?

There was indeed! In adding the test I've also fixed a bug in the implementation, now the durations of spans always match the exact duration provided.

@mx-psi mx-psi requested a review from jpkrohling September 21, 2023 07:57
@github-actions
Copy link
Contributor

github-actions bot commented Oct 6, 2023

This PR was marked stale due to lack of activity. It will be closed in 14 days.

@github-actions github-actions bot added the Stale label Oct 6, 2023
@jmsnll
Copy link
Contributor Author

jmsnll commented Oct 6, 2023

I will look at this today to get the branch updated

@github-actions github-actions bot removed the Stale label Oct 7, 2023
@github-actions
Copy link
Contributor

This PR was marked stale due to lack of activity. It will be closed in 14 days.

@github-actions github-actions bot added the Stale label Oct 22, 2023
@github-actions
Copy link
Contributor

github-actions bot commented Nov 6, 2023

Closed as inactive. Feel free to reopen if this PR is still being worked on.

@github-actions github-actions bot closed this Nov 6, 2023
mx-psi added a commit that referenced this pull request Nov 16, 2023
#29116)

**Description:** 

As originally proposed in #26991 before I got distracted

Exposes the duration of generated spans as a command line parameter. It
uses a `DurationVar` flag so units can be easily provided and are
automatically applied.

Example usage:

```bash
telemetrygen traces --traces 100 --otlp-insecure --span-duration 10ns # nanoseconds
telemetrygen traces --traces 100 --otlp-insecure --span-duration 10us # microseconds
telemetrygen traces --traces 100 --otlp-insecure --span-duration 10ms # milliseconds
telemetrygen traces --traces 100 --otlp-insecure --span-duration 10s # seconds
```

**Testing:** 

Ran without the argument provided `telemetrygen traces --traces 1
--otlp-insecure` and seen spans publishing with the default value.

Ran again with the argument provided: `telemetrygen traces --traces 1
--otlp-insecure --span-duration 1s`

And observed the expected output:

```
Resource SchemaURL: https://opentelemetry.io/schemas/1.4.0
Resource attributes:
     -> service.name: Str(telemetrygen)
ScopeSpans #0
ScopeSpans SchemaURL: 
InstrumentationScope telemetrygen 
Span #0
    Trace ID       : 8b441587ffa5820688b87a6b511d634c
    Parent ID      : 39faad428638791b
    ID             : 88f0886894bd4ee2
    Name           : okey-dokey
    Kind           : Server
    Start time     : 2023-11-12 02:05:07.97443 +0000 UTC
    End time       : 2023-11-12 02:05:08.97443 +0000 UTC
    Status code    : Unset
    Status message : 
Attributes:
     -> net.peer.ip: Str(1.2.3.4)
     -> peer.service: Str(telemetrygen-client)
Span #1
    Trace ID       : 8b441587ffa5820688b87a6b511d634c
    Parent ID      : 
    ID             : 39faad428638791b
    Name           : lets-go
    Kind           : Client
    Start time     : 2023-11-12 02:05:07.97443 +0000 UTC
    End time       : 2023-11-12 02:05:08.97443 +0000 UTC
    Status code    : Unset
    Status message : 
Attributes:
     -> net.peer.ip: Str(1.2.3.4)
     -> peer.service: Str(telemetrygen-server)
	{"kind": "exporter", "data_type": "traces", "name": "debug"}
```

**Documentation:** No documentation added.

---------

Co-authored-by: Pablo Baeyens <[email protected]>
RoryCrispin pushed a commit to ClickHouse/opentelemetry-collector-contrib that referenced this pull request Nov 24, 2023
open-telemetry#29116)

**Description:** 

As originally proposed in open-telemetry#26991 before I got distracted

Exposes the duration of generated spans as a command line parameter. It
uses a `DurationVar` flag so units can be easily provided and are
automatically applied.

Example usage:

```bash
telemetrygen traces --traces 100 --otlp-insecure --span-duration 10ns # nanoseconds
telemetrygen traces --traces 100 --otlp-insecure --span-duration 10us # microseconds
telemetrygen traces --traces 100 --otlp-insecure --span-duration 10ms # milliseconds
telemetrygen traces --traces 100 --otlp-insecure --span-duration 10s # seconds
```

**Testing:** 

Ran without the argument provided `telemetrygen traces --traces 1
--otlp-insecure` and seen spans publishing with the default value.

Ran again with the argument provided: `telemetrygen traces --traces 1
--otlp-insecure --span-duration 1s`

And observed the expected output:

```
Resource SchemaURL: https://opentelemetry.io/schemas/1.4.0
Resource attributes:
     -> service.name: Str(telemetrygen)
ScopeSpans #0
ScopeSpans SchemaURL: 
InstrumentationScope telemetrygen 
Span #0
    Trace ID       : 8b441587ffa5820688b87a6b511d634c
    Parent ID      : 39faad428638791b
    ID             : 88f0886894bd4ee2
    Name           : okey-dokey
    Kind           : Server
    Start time     : 2023-11-12 02:05:07.97443 +0000 UTC
    End time       : 2023-11-12 02:05:08.97443 +0000 UTC
    Status code    : Unset
    Status message : 
Attributes:
     -> net.peer.ip: Str(1.2.3.4)
     -> peer.service: Str(telemetrygen-client)
Span #1
    Trace ID       : 8b441587ffa5820688b87a6b511d634c
    Parent ID      : 
    ID             : 39faad428638791b
    Name           : lets-go
    Kind           : Client
    Start time     : 2023-11-12 02:05:07.97443 +0000 UTC
    End time       : 2023-11-12 02:05:08.97443 +0000 UTC
    Status code    : Unset
    Status message : 
Attributes:
     -> net.peer.ip: Str(1.2.3.4)
     -> peer.service: Str(telemetrygen-server)
	{"kind": "exporter", "data_type": "traces", "name": "debug"}
```

**Documentation:** No documentation added.

---------

Co-authored-by: Pablo Baeyens <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cmd/telemetrygen telemetrygen command Stale

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants