Changeset 19155 in josm for trunk/test/unit/org/openstreetmap/josm/data/cache
- Timestamp:
- 2024-07-29T17:57:38+02:00 (12 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/test/unit/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJobTest.java
r19050 r19155 21 21 import java.util.concurrent.TimeUnit; 22 22 23 import com.github.tomakehurst.wiremock.junit5.WireMockRuntimeInfo; 23 24 import org.apache.commons.jcs3.access.behavior.ICacheAccess; 24 25 import org.apache.commons.jcs3.engine.behavior.ICacheElement; … … 33 34 import org.openstreetmap.josm.tools.Logging; 34 35 35 import com.github.tomakehurst.wiremock.WireMockServer;36 36 import com.github.tomakehurst.wiremock.matching.UrlPattern; 37 37 … … 47 47 * mocked tile server 48 48 */ 49 @BasicWiremock 50 WireMockServer tileServer; 49 WireMockRuntimeInfo tileServer; 51 50 52 51 private static class TestCachedTileLoaderJob extends JCSCachedTileLoaderJob<String, CacheEntry> { … … 105 104 /** 106 105 * Always clear cache before tests 107 * @throws Exception when clearing fails108 106 */ 109 107 @BeforeEach 110 void clearCache() throws Exception{108 void clearCache() { 111 109 getCache().clear(); 112 110 } 113 111 112 @BeforeEach 113 void setup(WireMockRuntimeInfo wireMockRuntimeInfo) { 114 this.tileServer = wireMockRuntimeInfo; 115 } 116 114 117 /** 115 118 * Test status codes 116 * @throws InterruptedException in case of thread interruption117 119 * @throws IOException in case of I/O error 118 120 */ 119 121 @Test 120 void testStatusCodes() throws IOException , InterruptedException{122 void testStatusCodes() throws IOException { 121 123 doTestStatusCode(200); 122 124 doTestStatusCode(401); … … 155 157 156 158 private void doTestStatusCode(int responseCode) throws IOException { 157 tileServer. stubFor(get(urlEqualTo("/httpstat/" + responseCode)).willReturn(aResponse().withStatus(responseCode)));159 tileServer.getWireMock().register(get(urlEqualTo("/httpstat/" + responseCode)).willReturn(aResponse().withStatus(responseCode))); 158 160 TestCachedTileLoaderJob job = getStatusLoaderJob(responseCode); 159 161 Listener listener = submitJob(job); … … 196 198 createHeadGetStub(urlEqualTo("/test"), expires, testStart, "eTag", "mock entry"); 197 199 198 TestCachedTileLoaderJob job = new TestCachedTileLoaderJob(tileServer. url("/test"), "test");199 Listener listener = submitJob(job, false); 200 tileServer. verify(0, getRequestedFor(anyUrl()));200 TestCachedTileLoaderJob job = new TestCachedTileLoaderJob(tileServer.getHttpBaseUrl() + "/test", "test"); 201 Listener listener = submitJob(job, false); 202 tileServer.getWireMock().verifyThat(0, getRequestedFor(anyUrl())); 201 203 assertArrayEquals("cached entry".getBytes(StandardCharsets.UTF_8), listener.data); 202 204 } … … 217 219 createHeadGetStub(urlEqualTo("/test"), expires, testStart, "eTag", "mock entry"); 218 220 219 TestCachedTileLoaderJob job = new TestCachedTileLoaderJob(tileServer. url("/test"), "test");221 TestCachedTileLoaderJob job = new TestCachedTileLoaderJob(tileServer.getHttpBaseUrl() + "/test", "test"); 220 222 Listener listener = submitJob(job, true); 221 tileServer. verify(1, getRequestedFor(urlEqualTo("/test")));223 tileServer.getWireMock().verifyThat(1, getRequestedFor(urlEqualTo("/test"))); 222 224 assertArrayEquals("mock entry".getBytes(StandardCharsets.UTF_8), listener.data); 223 225 } … … 231 233 void testSettingMinimumExpiryWhenNoExpires() throws IOException { 232 234 long testStart = System.currentTimeMillis(); 233 tileServer. stubFor(get(urlEqualTo("/test")).willReturn(aResponse().withBody("mock entry")));234 235 TestCachedTileLoaderJob job = new TestCachedTileLoaderJob(tileServer. url("/test"), "test");236 Listener listener = submitJob(job, false); 237 tileServer. verify(1, getRequestedFor(urlEqualTo("/test")));235 tileServer.getWireMock().register(get(urlEqualTo("/test")).willReturn(aResponse().withBody("mock entry"))); 236 237 TestCachedTileLoaderJob job = new TestCachedTileLoaderJob(tileServer.getHttpBaseUrl() + "/test", "test"); 238 Listener listener = submitJob(job, false); 239 tileServer.getWireMock().verifyThat(1, getRequestedFor(urlEqualTo("/test"))); 238 240 239 241 assertTrue(listener.attributes.getExpirationTime() >= testStart + JCSCachedTileLoaderJob.DEFAULT_EXPIRE_TIME, … … 260 262 long testStart = System.currentTimeMillis(); 261 263 long expires = TimeUnit.DAYS.toSeconds(1); 262 tileServer. stubFor(get(urlEqualTo("/test"))264 tileServer.getWireMock().register(get(urlEqualTo("/test")) 263 265 .willReturn(aResponse() 264 266 .withHeader("Cache-control", "max-age=" + expires) … … 267 269 ); 268 270 269 TestCachedTileLoaderJob job = new TestCachedTileLoaderJob(tileServer. url("/test"), "test");270 Listener listener = submitJob(job, false); 271 tileServer. verify(1, getRequestedFor(urlEqualTo("/test")));271 TestCachedTileLoaderJob job = new TestCachedTileLoaderJob(tileServer.getHttpBaseUrl() + "/test", "test"); 272 Listener listener = submitJob(job, false); 273 tileServer.getWireMock().verifyThat(1, getRequestedFor(urlEqualTo("/test"))); 272 274 273 275 assertTrue(listener.attributes.getExpirationTime() >= testStart + TimeUnit.SECONDS.toMillis(expires), … … 298 300 createHeadGetStub(urlEqualTo("/test"), (JCSCachedTileLoaderJob.DEFAULT_EXPIRE_TIME / 10), testStart, "eTag", "mock entry"); 299 301 300 TestCachedTileLoaderJob job = new TestCachedTileLoaderJob(tileServer. url("/test"), "test", minimumExpiryTimeSeconds);301 Listener listener = submitJob(job, false); 302 tileServer. verify(1, getRequestedFor(urlEqualTo("/test")));302 TestCachedTileLoaderJob job = new TestCachedTileLoaderJob(tileServer.getHttpBaseUrl() + "/test", "test", minimumExpiryTimeSeconds); 303 Listener listener = submitJob(job, false); 304 tileServer.getWireMock().verifyThat(1, getRequestedFor(urlEqualTo("/test"))); 303 305 assertArrayEquals("mock entry".getBytes(StandardCharsets.UTF_8), listener.data); 304 306 … … 331 333 createHeadGetStub(urlEqualTo("/test"), (JCSCachedTileLoaderJob.DEFAULT_EXPIRE_TIME / 10), testStart, "eTag", "mock entry"); 332 334 333 TestCachedTileLoaderJob job = new TestCachedTileLoaderJob(tileServer. url("/test"), "test", minimumExpiryTimeSeconds);334 Listener listener = submitJob(job, false); 335 tileServer. verify(1, getRequestedFor(urlEqualTo("/test")));335 TestCachedTileLoaderJob job = new TestCachedTileLoaderJob(tileServer.getHttpBaseUrl() + "/test", "test", minimumExpiryTimeSeconds); 336 Listener listener = submitJob(job, false); 337 tileServer.getWireMock().verifyThat(1, getRequestedFor(urlEqualTo("/test"))); 336 338 assertArrayEquals("mock entry".getBytes(StandardCharsets.UTF_8), listener.data); 337 339 … … 367 369 int minimumExpiryTimeSeconds = 0; 368 370 369 tileServer. stubFor(get(urlEqualTo("/test"))371 tileServer.getWireMock().register(get(urlEqualTo("/test")) 370 372 .willReturn(aResponse() 371 373 .withHeader("Expires", TestUtils.getHTTPDate(testStart + (JCSCachedTileLoaderJob.DEFAULT_EXPIRE_TIME / 10))) … … 375 377 ) 376 378 ); 377 tileServer. stubFor(head(urlEqualTo("/test"))379 tileServer.getWireMock().register(head(urlEqualTo("/test")) 378 380 .willReturn(aResponse() 379 381 .withHeader("Expires", TestUtils.getHTTPDate(testStart + (JCSCachedTileLoaderJob.DEFAULT_EXPIRE_TIME / 10))) … … 382 384 ) 383 385 ); 384 TestCachedTileLoaderJob job = new TestCachedTileLoaderJob(tileServer. url("/test"), "test", minimumExpiryTimeSeconds);385 Listener listener = submitJob(job, false); 386 tileServer. verify(1, getRequestedFor(urlEqualTo("/test")));386 TestCachedTileLoaderJob job = new TestCachedTileLoaderJob(tileServer.getHttpBaseUrl() + "/test", "test", minimumExpiryTimeSeconds); 387 Listener listener = submitJob(job, false); 388 tileServer.getWireMock().verifyThat(1, getRequestedFor(urlEqualTo("/test"))); 387 389 assertArrayEquals("mock entry".getBytes(StandardCharsets.UTF_8), listener.data); 388 390 … … 413 415 int minimumExpiryTimeSeconds = 0; 414 416 415 tileServer. stubFor(get(urlEqualTo("/test"))417 tileServer.getWireMock().register(get(urlEqualTo("/test")) 416 418 .willReturn(aResponse() 417 419 .withHeader("Cache-Control", "" + … … 422 424 ) 423 425 ); 424 tileServer. stubFor(head(urlEqualTo("/test"))426 tileServer.getWireMock().register(head(urlEqualTo("/test")) 425 427 .willReturn(aResponse() 426 428 .withHeader("Cache-Control", "" + … … 429 431 ) 430 432 )); 431 TestCachedTileLoaderJob job = new TestCachedTileLoaderJob(tileServer. url("/test"), "test", minimumExpiryTimeSeconds);432 Listener listener = submitJob(job, false); 433 tileServer. verify(1, getRequestedFor(urlEqualTo("/test")));433 TestCachedTileLoaderJob job = new TestCachedTileLoaderJob(tileServer.getHttpBaseUrl() + "/test", "test", minimumExpiryTimeSeconds); 434 Listener listener = submitJob(job, false); 435 tileServer.getWireMock().verifyThat(1, getRequestedFor(urlEqualTo("/test"))); 434 436 assertArrayEquals("mock entry".getBytes(StandardCharsets.UTF_8), listener.data); 435 437 … … 461 463 ); 462 464 463 tileServer. stubFor(get(urlEqualTo("/test"))465 tileServer.getWireMock().register(get(urlEqualTo("/test")) 464 466 .willReturn(aResponse() 465 467 .withHeader("Expires", TestUtils.getHTTPDate(testStart + expires)) … … 469 471 ) 470 472 ); 471 tileServer. stubFor(head(urlEqualTo("/test"))473 tileServer.getWireMock().register(head(urlEqualTo("/test")) 472 474 .willReturn(aResponse() 473 475 .withHeader("Expires", TestUtils.getHTTPDate(testStart + expires)) … … 477 479 ); 478 480 479 TestCachedTileLoaderJob job = new TestCachedTileLoaderJob(tileServer. url("/test"), "test");481 TestCachedTileLoaderJob job = new TestCachedTileLoaderJob(tileServer.getHttpBaseUrl() + "/test", "test"); 480 482 Listener listener = submitJob(job, false); // cache entry is expired, no need to force refetch 481 tileServer. verify(1, getRequestedFor(urlEqualTo("/test")));483 tileServer.getWireMock().verifyThat(1, getRequestedFor(urlEqualTo("/test"))); 482 484 assertArrayEquals("mock entry".getBytes(StandardCharsets.UTF_8), listener.data); 483 485 484 486 // cache entry should be retrieved from cache 485 487 listener = submitJob(job, false); 486 tileServer. verify(1, getRequestedFor(urlEqualTo("/test")));488 tileServer.getWireMock().verifyThat(1, getRequestedFor(urlEqualTo("/test"))); 487 489 assertArrayEquals("mock entry".getBytes(StandardCharsets.UTF_8), listener.data); 488 490 … … 494 496 495 497 // because cache entry is invalid - HEAD request shall be made 496 tileServer. verify(0, headRequestedFor(urlEqualTo("/test"))); // no head requests were made until now498 tileServer.getWireMock().verifyThat(0, headRequestedFor(urlEqualTo("/test"))); // no head requests were made until now 497 499 listener = submitJob(job, false); 498 tileServer. verify(1, headRequestedFor(urlEqualTo("/test"))); // verify head requests were made499 tileServer. verify(1, getRequestedFor(urlEqualTo("/test"))); // verify no more get requests were made500 tileServer.getWireMock().verifyThat(1, headRequestedFor(urlEqualTo("/test"))); // verify head requests were made 501 tileServer.getWireMock().verifyThat(1, getRequestedFor(urlEqualTo("/test"))); // verify no more get requests were made 500 502 assertArrayEquals("mock entry".getBytes(StandardCharsets.UTF_8), listener.data); 501 503 assertTrue(listener.attributes.getExpirationTime() >= testStart + expires); … … 503 505 // cache entry should be retrieved from cache 504 506 listener = submitJob(job, false); // cache entry is expired, no need to force refetch 505 tileServer. verify(1, getRequestedFor(urlEqualTo("/test")));506 tileServer. verify(1, getRequestedFor(urlEqualTo("/test")));507 tileServer.getWireMock().verifyThat(1, getRequestedFor(urlEqualTo("/test"))); 508 tileServer.getWireMock().verifyThat(1, getRequestedFor(urlEqualTo("/test"))); 507 509 assertArrayEquals("mock entry".getBytes(StandardCharsets.UTF_8), listener.data); 508 510 } … … 522 524 ); 523 525 524 tileServer. stubFor(get(urlEqualTo("/test"))526 tileServer.getWireMock().register(get(urlEqualTo("/test")) 525 527 .willReturn(status(304) 526 528 .withHeader("Expires", TestUtils.getHTTPDate(testStart + expires)) … … 530 532 ); 531 533 532 TestCachedTileLoaderJob job = new TestCachedTileLoaderJob(tileServer. url("/test"), "test");533 Listener listener = submitJob(job, false); 534 tileServer. verify(1, getRequestedFor(urlEqualTo("/test")));534 TestCachedTileLoaderJob job = new TestCachedTileLoaderJob(tileServer.getHttpBaseUrl() + "/test", "test"); 535 Listener listener = submitJob(job, false); 536 tileServer.getWireMock().verifyThat(1, getRequestedFor(urlEqualTo("/test"))); 535 537 assertArrayEquals("cached dummy".getBytes(StandardCharsets.UTF_8), listener.data); 536 538 assertTrue(testStart + expires <= listener.attributes.getExpirationTime()); 537 539 submitJob(job, false); 538 tileServer. verify(1, getRequestedFor(urlEqualTo("/test"))); // no more requests were made540 tileServer.getWireMock().verifyThat(1, getRequestedFor(urlEqualTo("/test"))); // no more requests were made 539 541 } 540 542 541 543 private void createHeadGetStub(UrlPattern url, long expires, long lastModified, String eTag, String body) { 542 tileServer. stubFor(get(url)544 tileServer.getWireMock().register(get(url) 543 545 .willReturn(aResponse() 544 546 .withHeader("Expires", TestUtils.getHTTPDate(lastModified + expires)) … … 548 550 ) 549 551 ); 550 tileServer. stubFor(head(url)552 tileServer.getWireMock().register(head(url) 551 553 .willReturn(aResponse() 552 554 .withHeader("Expires", TestUtils.getHTTPDate(lastModified + expires)) … … 567 569 568 570 private TestCachedTileLoaderJob getStatusLoaderJob(int responseCode) { 569 return new TestCachedTileLoaderJob(tileServer. url("/httpstat/" + responseCode), "key_" + responseCode);571 return new TestCachedTileLoaderJob(tileServer.getHttpBaseUrl() + "/httpstat/" + responseCode, "key_" + responseCode); 570 572 } 571 573
Note:
See TracChangeset
for help on using the changeset viewer.