4
4
import io .opentelemetry .api .trace .Span ;
5
5
import io .opentelemetry .api .trace .Tracer ;
6
6
import io .opentelemetry .instrumentation .annotations .WithSpan ;
7
+ import org .bouncycastle .jcajce .provider .asymmetric .rsa .DigestSignatureSpi ;
8
+ import org .bouncycastle .jcajce .provider .digest .SHA3 ;
7
9
8
10
import java .security .MessageDigest ;
9
11
import java .security .NoSuchAlgorithmException ;
@@ -16,7 +18,14 @@ public class CpuBurnerMain {
16
18
17
19
public static volatile Object sink ;
18
20
19
- public static void main (String [] args ) throws InterruptedException {
21
+ public static void main (String [] args ) throws InterruptedException , NoSuchAlgorithmException {
22
+
23
+ MessageDigest [] hashAlgos = new MessageDigest [] {
24
+ MessageDigest .getInstance ("SHA-256" ),
25
+ new SHA3 .DigestSHA3 (256 )
26
+ };
27
+
28
+
20
29
Thread t1 = new Thread (() -> {
21
30
while (true ) {
22
31
try {
@@ -33,8 +42,10 @@ public static void main(String[] args) throws InterruptedException {
33
42
34
43
35
44
Thread t2 = new Thread (() -> {
45
+ int iteration = 0 ;
36
46
while (true ) {
37
- shaShenanigans ();
47
+ iteration ++;
48
+ shaShenanigans (hashAlgos [iteration % hashAlgos .length ]);
38
49
try {
39
50
Thread .sleep (2000 );
40
51
} catch (InterruptedException e ) {
@@ -88,32 +99,30 @@ public static void fibonacciFun() {
88
99
}
89
100
}
90
101
91
- public static void shaShenanigans () {
92
- Span span = tracer .spanBuilder ("shaShenanigans" ).startSpan ();
102
+ public static void shaShenanigans (MessageDigest digest ) {
103
+ Span span = tracer .spanBuilder ("shaShenanigans" )
104
+ .setAttribute ("algorithm" , digest .getAlgorithm ())
105
+ .startSpan ();
106
+
93
107
try (var scope = span .makeCurrent ()) {
94
108
long start = System .nanoTime ();
95
109
while ((System .nanoTime () - start ) < 100_000_000L ) {
96
- sink = hashRandomStuff ();
110
+ sink = hashRandomStuff (digest );
97
111
}
98
112
} finally {
99
113
span .end ();
100
114
}
101
115
}
102
116
103
117
@ WithSpan
104
- private static byte [] hashRandomStuff () {
105
- try {
106
- MessageDigest digest = MessageDigest .getInstance ("SHA-256" );
107
- Random rnd = new Random ();
108
- byte [] buffer = new byte [1024 ];
109
- for (int i = 0 ; i < 5000 ; i ++) {
110
- rnd .nextBytes (buffer );
111
- digest .update (buffer );
112
- }
113
- return digest .digest ();
114
- } catch (NoSuchAlgorithmException e ) {
115
- throw new RuntimeException (e );
118
+ private static byte [] hashRandomStuff (MessageDigest digest ) {
119
+ Random rnd = new Random ();
120
+ byte [] buffer = new byte [1024 ];
121
+ for (int i = 0 ; i < 5000 ; i ++) {
122
+ rnd .nextBytes (buffer );
123
+ digest .update (buffer );
116
124
}
125
+ return digest .digest ();
117
126
}
118
127
119
128
0 commit comments