Browse Source

KERNEL-1117 根据插件增加了fineKit的部分文件,其中单例模式返回单例的方法没有进行单元测试

remotes/1611766341912730171/master
Kalven 5 years ago
parent
commit
3d07eaf44f
  1. 372
      src/test/java/com/fanruan/api/session/SessionKitTest.java

372
src/test/java/com/fanruan/api/session/SessionKitTest.java

@ -1,186 +1,186 @@
//package com.fanruan.api.session; package com.fanruan.api.session;
//
//import com.fanruan.api.Prepare; import com.fanruan.api.Prepare;
//import com.fr.general.web.ParameterConstants; import com.fr.general.web.ParameterConstants;
//import com.fr.invoke.Reflect; import com.fr.invoke.Reflect;
//import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
//import com.fr.stable.web.SessionProvider; import com.fr.stable.web.SessionProvider;
//import com.fr.stable.web.SessionSource; import com.fr.stable.web.SessionSource;
//import com.fr.stable.web.Weblet; import com.fr.stable.web.Weblet;
//import com.fr.web.core.RemoteAddressManager; import com.fr.web.core.RemoteAddressManager;
//import com.fr.web.core.SessionPoolManager; import com.fr.web.core.SessionPoolManager;
//import com.fr.web.session.SessionIDInfo; import com.fr.web.session.SessionIDInfo;
//import com.fr.web.utils.WebUtils; import com.fr.web.utils.WebUtils;
//import org.easymock.EasyMock; import org.easymock.EasyMock;
//import org.easymock.IAnswer; import org.easymock.IAnswer;
//import org.easymock.IMocksControl; import org.easymock.IMocksControl;
//import org.junit.Assert; import org.junit.Assert;
//import org.junit.Test; import org.junit.Test;
//import org.junit.runner.RunWith; import org.junit.runner.RunWith;
//import org.powermock.api.easymock.PowerMock; import org.powermock.api.easymock.PowerMock;
//import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.core.classloader.annotations.PrepareForTest;
//import org.powermock.core.classloader.annotations.SuppressStaticInitializationFor; import org.powermock.core.classloader.annotations.SuppressStaticInitializationFor;
//import org.powermock.modules.junit4.PowerMockRunner; import org.powermock.modules.junit4.PowerMockRunner;
//import org.powermock.reflect.Whitebox; import org.powermock.reflect.Whitebox;
//
//import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
//import java.util.HashMap; import java.util.HashMap;
//import java.util.HashSet; import java.util.HashSet;
//import java.util.List; import java.util.List;
//import java.util.Map; import java.util.Map;
//import java.util.Set; import java.util.Set;
//import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
//import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
//import java.util.concurrent.Executors; import java.util.concurrent.Executors;
//
//import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
//import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertFalse;
//import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotNull;
//import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
//
///** /**
// * @author richie * @author richie
// * @version 10.0 * @version 10.0
// * Created by richie on 2019-08-09 * Created by richie on 2019-08-09
// */ */
//@RunWith(PowerMockRunner.class) @RunWith(PowerMockRunner.class)
//@PrepareForTest({SessionPoolManager.class, WebUtils.class}) @PrepareForTest({SessionPoolManager.class, WebUtils.class})
//@SuppressStaticInitializationFor({"com.fr.web.core.SessionPoolManager"}) @SuppressStaticInitializationFor({"com.fr.web.core.SessionPoolManager"})
//public class SessionKitTest extends Prepare { public class SessionKitTest extends Prepare {
//
// private static final long MIN_ACCESS_INTERVAL = 900; private static final long MIN_ACCESS_INTERVAL = 900;
// private int taskCount = 0; private int taskCount = 0;
// private Map<String, SessionProvider> sessions = new HashMap<String, SessionProvider>(); private Map<String, SessionProvider> sessions = new HashMap<String, SessionProvider>();
//
// @Test @Test
// public void testGenerateSession() throws Exception { public void testGenerateSession() throws Exception {
// final SessionIDInfo sessionInfo = new MockSession("session"); final SessionIDInfo sessionInfo = new MockSession("session");
// final Map<String, Object> params = new HashMap<String, Object>(); final Map<String, Object> params = new HashMap<String, Object>();
// PowerMock.mockStatic(SessionPoolManager.class); PowerMock.mockStatic(SessionPoolManager.class);
// PowerMock.mockStatic(WebUtils.class); PowerMock.mockStatic(WebUtils.class);
// IMocksControl control = EasyMock.createControl(); IMocksControl control = EasyMock.createControl();
// final HttpServletRequest request = control.createMock(HttpServletRequest.class); final HttpServletRequest request = control.createMock(HttpServletRequest.class);
// EasyMock.expect(WebUtils.getIpAddr(request)).andReturn("127.0.0.1").anyTimes(); EasyMock.expect(WebUtils.getIpAddr(request)).andReturn("127.0.0.1").anyTimes();
// EasyMock.expect(WebUtils.getHTTPRequestParameter(request, ParameterConstants.OP)).andReturn("view").anyTimes(); EasyMock.expect(WebUtils.getHTTPRequestParameter(request, ParameterConstants.OP)).andReturn("view").anyTimes();
// EasyMock.expect(WebUtils.parameters4SessionIDInforContainMPCache(request)).andReturn(params).anyTimes(); EasyMock.expect(WebUtils.parameters4SessionIDInforContainMPCache(request)).andReturn(params).anyTimes();
// final Weblet weblet = control.createMock(Weblet.class); final Weblet weblet = control.createMock(Weblet.class);
// EasyMock.expect(weblet.isSessionOccupy()).andReturn(false).anyTimes(); EasyMock.expect(weblet.isSessionOccupy()).andReturn(false).anyTimes();
// EasyMock.expect(weblet.createSessionIDInfor(request, "127.0.0.1", params)).andReturn(sessionInfo).anyTimes(); EasyMock.expect(weblet.createSessionIDInfor(request, "127.0.0.1", params)).andReturn(sessionInfo).anyTimes();
// EasyMock.expect(addSessionIDInfo(sessionInfo)).andReturn(sessionInfo.getSessionID()).anyTimes(); EasyMock.expect(addSessionIDInfo(sessionInfo)).andReturn(sessionInfo.getSessionID()).anyTimes();
// EasyMock.expect(SessionPoolManager.generateSessionID(request, null, weblet)).andAnswer(new IAnswer<String>() { EasyMock.expect(SessionPoolManager.generateSessionID(request, null, weblet)).andAnswer(new IAnswer<String>() {
// @Override @Override
// public String answer() throws Throwable { public String answer() throws Throwable {
// SessionProvider sessionIDInfor = weblet.createSessionIDInfor(request, "127.0.0.1", params); SessionProvider sessionIDInfor = weblet.createSessionIDInfor(request, "127.0.0.1", params);
// String sessionID = addSessionIDInfo(sessionIDInfor); String sessionID = addSessionIDInfo(sessionIDInfor);
// if (weblet.isSessionOccupy()) { if (weblet.isSessionOccupy()) {
// assert sessionID != null; assert sessionID != null;
// RemoteAddressManager.add("127.0.0.1", sessionID); RemoteAddressManager.add("127.0.0.1", sessionID);
// } }
// return sessionID; return sessionID;
// } }
// }).anyTimes(); }).anyTimes();
// control.replay(); control.replay();
// PowerMock.replayAll(); PowerMock.replayAll();
// sessionInfo.setSource(SessionSource.SINGLE); sessionInfo.setSource(SessionSource.SINGLE);
// SessionPoolManager.generateSessionID(request, null, weblet); SessionPoolManager.generateSessionID(request, null, weblet);
// Assert.assertSame(sessionInfo.getSource(), SessionSource.SINGLE); Assert.assertSame(sessionInfo.getSource(), SessionSource.SINGLE);
// sessionInfo.setSource(SessionSource.INTEGRATION); sessionInfo.setSource(SessionSource.INTEGRATION);
// SessionPoolManager.generateSessionID(request, null, weblet); SessionPoolManager.generateSessionID(request, null, weblet);
// Assert.assertSame(sessionInfo.getSource(), SessionSource.INTEGRATION); Assert.assertSame(sessionInfo.getSource(), SessionSource.INTEGRATION);
//
// } }
//
// @Test @Test
// public void testAddDelayTask() { public void testAddDelayTask() {
// String sessionID = "test"; String sessionID = "test";
// sessions.put("test", new MockSession("test")); sessions.put("test", new MockSession("test"));
// for (int i = 0; i < 100; i++) { for (int i = 0; i < 100; i++) {
// accessSession(sessionID); accessSession(sessionID);
// } }
// Assert.assertEquals(1, this.taskCount); Assert.assertEquals(1, this.taskCount);
// for (int i = 0; i < 2; i++) { for (int i = 0; i < 2; i++) {
// try { try {
// Thread.sleep(1000); Thread.sleep(1000);
// } catch (InterruptedException e) { } catch (InterruptedException e) {
// //do nothing //do nothing
// } }
// accessSession(sessionID); accessSession(sessionID);
// } }
// Assert.assertEquals(3, this.taskCount); Assert.assertEquals(3, this.taskCount);
// } }
//
// private void accessSession(String sessionId) { private void accessSession(String sessionId) {
// if (StringUtils.isBlank(sessionId)) { if (StringUtils.isBlank(sessionId)) {
// return; return;
// } }
//
// SessionProvider sessionIDInfor = sessions.get(sessionId); SessionProvider sessionIDInfor = sessions.get(sessionId);
// if (sessionIDInfor != null) { if (sessionIDInfor != null) {
// long accessInterval = System.currentTimeMillis() - sessionIDInfor.getLastAccessTime(); long accessInterval = System.currentTimeMillis() - sessionIDInfor.getLastAccessTime();
// sessionIDInfor.updateTime(); sessionIDInfor.updateTime();
// if (accessInterval > MIN_ACCESS_INTERVAL) { if (accessInterval > MIN_ACCESS_INTERVAL) {
// taskCount++; taskCount++;
// } }
// } }
// } }
//
// @Test @Test
// public void testGetAllSession() { public void testGetAllSession() {
// Whitebox.setInternalState( Whitebox.setInternalState(
// SessionPoolManager.class, SessionPoolManager.class,
// "sessionIDMap", "sessionIDMap",
// new ConcurrentHashMap<String, SessionProvider>() new ConcurrentHashMap<String, SessionProvider>()
// ); );
// Whitebox.setInternalState(SessionPoolManager.class, "sessionToDelete", new HashSet<String>()); Whitebox.setInternalState(SessionPoolManager.class, "sessionToDelete", new HashSet<String>());
// Map<String, SessionProvider> sessionIDMap = Reflect.on(SessionPoolManager.class).get("sessionIDMap"); Map<String, SessionProvider> sessionIDMap = Reflect.on(SessionPoolManager.class).get("sessionIDMap");
// String sessionID1 = "Test1"; String sessionID1 = "Test1";
// sessionIDMap.put(sessionID1, new MockSession(sessionID1)); sessionIDMap.put(sessionID1, new MockSession(sessionID1));
// sessionIDMap.put("Test2", new MockSession("Test2")); sessionIDMap.put("Test2", new MockSession("Test2"));
// closeSession(sessionID1); closeSession(sessionID1);
// List<SessionProvider> list = SessionPoolManager.getAllSession(SessionProvider.class); List<SessionProvider> list = SessionPoolManager.getAllSession(SessionProvider.class);
// assertEquals(1, list.size()); assertEquals(1, list.size());
// assertEquals("Test2", list.get(0).getSessionID()); assertEquals("Test2", list.get(0).getSessionID());
// assertNotNull(SessionKit.getSession("Test2")); assertNotNull(SessionKit.getSession("Test2"));
// } }
//
// @Test @Test
// public void testHasSessionID() { public void testHasSessionID() {
// Whitebox.setInternalState( Whitebox.setInternalState(
// SessionPoolManager.class, SessionPoolManager.class,
// "sessionIDMap", "sessionIDMap",
// new ConcurrentHashMap<String, SessionProvider>() new ConcurrentHashMap<String, SessionProvider>()
// ); );
// Whitebox.setInternalState(SessionPoolManager.class, "sessionToDelete", new HashSet<String>()); Whitebox.setInternalState(SessionPoolManager.class, "sessionToDelete", new HashSet<String>());
// Map<String, SessionProvider> sessionIDMap = Reflect.on(SessionPoolManager.class).get("sessionIDMap"); Map<String, SessionProvider> sessionIDMap = Reflect.on(SessionPoolManager.class).get("sessionIDMap");
// String sessionID1 = "Test1"; String sessionID1 = "Test1";
// sessionIDMap.put(sessionID1, new MockSession(sessionID1)); sessionIDMap.put(sessionID1, new MockSession(sessionID1));
// sessionIDMap.put("Test2", new MockSession("Test2")); sessionIDMap.put("Test2", new MockSession("Test2"));
// closeSession(sessionID1); closeSession(sessionID1);
// assertFalse(SessionPoolManager.hasSessionID(sessionID1)); assertFalse(SessionPoolManager.hasSessionID(sessionID1));
// assertTrue(SessionPoolManager.hasSessionID("Test2")); assertTrue(SessionPoolManager.hasSessionID("Test2"));
// } }
//
// private void closeSession(final String sessionID) { private void closeSession(final String sessionID) {
// final Set<String> sessionToDelete = Reflect.on(SessionPoolManager.class).get("sessionToDelete"); final Set<String> sessionToDelete = Reflect.on(SessionPoolManager.class).get("sessionToDelete");
// sessionToDelete.add(sessionID); sessionToDelete.add(sessionID);
// ExecutorService closeSessionPool = Executors.newFixedThreadPool(1); ExecutorService closeSessionPool = Executors.newFixedThreadPool(1);
// closeSessionPool.submit(new Runnable() { closeSessionPool.submit(new Runnable() {
// @Override @Override
// public void run() { public void run() {
// try { try {
// //模拟删除session对象的过程 //模拟删除session对象的过程
// Thread.sleep(1000); Thread.sleep(1000);
// } catch (InterruptedException e) { } catch (InterruptedException e) {
// //do nothing //do nothing
// } }
// synchronized (SessionPoolManager.class) { synchronized (SessionPoolManager.class) {
// sessionToDelete.remove(sessionID); sessionToDelete.remove(sessionID);
// } }
// } }
// }); });
// } }
//
// private String addSessionIDInfo(SessionProvider sessionIDInfo) { private String addSessionIDInfo(SessionProvider sessionIDInfo) {
// return Reflect.on(SessionPoolManager.class).call("addSessionIDInfor", sessionIDInfo).get(); return Reflect.on(SessionPoolManager.class).call("addSessionIDInfor", sessionIDInfo).get();
// } }
//} }
Loading…
Cancel
Save