@@ -180,4 +180,53 @@ void cachePollTimeouts() {
180180 10L ));
181181 assertThat (ex .getMessage ()).contains ("Timeout" );
182182 }
183+
184+ @ Test
185+ public void compareResourceVersionsTest () {
186+ assertThat (compareResourceVersions ("11" , "22" )).isNegative ();
187+ assertThat (compareResourceVersions ("22" , "11" )).isPositive ();
188+ assertThat (compareResourceVersions ("1" , "1" )).isZero ();
189+ assertThat (compareResourceVersions ("11" , "11" )).isZero ();
190+ assertThat (compareResourceVersions ("123" , "2" )).isPositive ();
191+ assertThat (compareResourceVersions ("3" , "211" )).isNegative ();
192+
193+ assertThrows (
194+ NonComparableResourceVersionException .class , () -> compareResourceVersions ("aa" , "22" ));
195+ assertThrows (
196+ NonComparableResourceVersionException .class , () -> compareResourceVersions ("11" , "ba" ));
197+ assertThrows (
198+ NonComparableResourceVersionException .class , () -> compareResourceVersions ("" , "22" ));
199+ assertThrows (
200+ NonComparableResourceVersionException .class , () -> compareResourceVersions ("11" , "" ));
201+ assertThrows (
202+ NonComparableResourceVersionException .class , () -> compareResourceVersions ("01" , "123" ));
203+ assertThrows (
204+ NonComparableResourceVersionException .class , () -> compareResourceVersions ("123" , "01" ));
205+ assertThrows (
206+ NonComparableResourceVersionException .class , () -> compareResourceVersions ("3213" , "123a" ));
207+ assertThrows (
208+ NonComparableResourceVersionException .class , () -> compareResourceVersions ("321" , "123a" ));
209+ }
210+
211+ // naive performance test that compares the work case scenario for the parsing and non-parsing
212+ // variants
213+ @ Test
214+ @ Disabled
215+ public void compareResourcePerformanceTest () {
216+ var execNum = 30000000 ;
217+ var startTime = System .currentTimeMillis ();
218+ for (int i = 0 ; i < execNum ; i ++) {
219+ var res = compareResourceVersions ("123456788" , "123456789" );
220+ }
221+ var dur1 = System .currentTimeMillis () - startTime ;
222+ log .info ("Duration without parsing: {}" , dur1 );
223+ startTime = System .currentTimeMillis ();
224+ for (int i = 0 ; i < execNum ; i ++) {
225+ var res = Long .parseLong ("123456788" ) > Long .parseLong ("123456789" );
226+ }
227+ var dur2 = System .currentTimeMillis () - startTime ;
228+ log .info ("Duration with parsing: {}" , dur2 );
229+
230+ assertThat (dur1 ).isLessThan (dur2 );
231+ }
183232}
0 commit comments