1 package org.oxerr.webmagic.proxy; 2 3 import static org.junit.jupiter.api.Assertions.assertEquals; 4 import static org.mockito.Mockito.mock; 5 6 import org.apache.commons.lang3.SerializationUtils; 7 import org.junit.jupiter.api.BeforeEach; 8 import org.junit.jupiter.api.Test; 9 10 import us.codecraft.webmagic.Page; 11 import us.codecraft.webmagic.Task; 12 import us.codecraft.webmagic.proxy.Proxy; 13 14 class DelayedProxyProviderTest { 15 16 private DelayedProxyProvider provider; 17 18 @BeforeEach 19 void setUp() throws Exception { 20 this.provider = new DelayedProxyProvider(); 21 this.provider.put(new Proxy("127.0.0.1", 3128)); 22 } 23 24 @Test 25 void testReturnProxy() { 26 var task = mock(Task.class); 27 var page = mock(Page.class); 28 var proxy = this.provider.getProxy(task); 29 assertEquals(1, this.provider.getAllProxies().size()); 30 assertEquals(0, this.provider.getProxies().size()); 31 this.provider.returnProxy(proxy, page, task); 32 assertEquals(1, this.provider.getAllProxies().size()); 33 assertEquals(1, this.provider.getProxies().size()); 34 } 35 36 @Test 37 void testGetProxy() { 38 var proxy = provider.getProxy(null); 39 assertEquals(new Proxy("127.0.0.1", 3128), proxy); 40 } 41 42 @Test 43 void testPut() { 44 provider.put(new Proxy("127.0.0.1", 3128)); 45 provider.put(new Proxy("127.0.0.1", 1028, "socks")); 46 assertEquals(2, provider.getAllProxies().size()); 47 assertEquals(2, provider.getProxies().size()); 48 } 49 50 @Test 51 void testExternalizable() { 52 var deserialized = SerializationUtils.roundtrip(this.provider); 53 assertEquals(1, deserialized.getAllProxies().size()); 54 assertEquals(1, deserialized.getProxies().size()); 55 } 56 57 }