// Path: cn.ctodb.push.server/src/main/java/cn/ctodb/push/server/UserManager.java
// @Component
// public class UserManager {
// 
//     private static final Logger logger = LoggerFactory.getLogger(UserManager.class);
// 
//     private static HashMap<String, ChannelHandlerContext> onlineUser = new HashMap<>();
// 
//     @Autowired
//     private RedisTemplate<String, String> redisTemplate;
//     @Autowired
//     private MgsServer mgsServer;
// 
//     private final String onlineUserListKey = "onlineUserListKey";
// 
//     public void clearUserOnlineData() {
//         redisTemplate.delete(onlineUserListKey);
//     }
// 
//     public void on(User user, ChannelHandlerContext context) {
//         // 查询是否有其他在线情况
// 
//         // 记录但前进程连接的用户信息
//         onlineUser.put(user.id, context);
//         User u = getUserHash().get(user.id);
//         if (u != null && u.servers != null) {
//             user.servers = u.servers;
//         } else {
//             user.servers = new HashSet<>();
//         }
//         user.servers.add(mgsServer.getId());
//         // 记录信息进redis
//         getUserHash().put(user.id, user);
//         logger.info("user online {}", user.id);
//     }
// 
//     public void off(String userId) {
//         User u = getUserHash().get(userId);
//         u.servers.remove(mgsServer.getId());
//         getUserHash().put(userId, u);
//         onlineUser.remove(userId).disconnect();
//         logger.info("user offline {}", userId);
//     }
// 
//     public ChannelHandlerContext getContext(String userId) {
//         return onlineUser.get(userId);
//     }
// 
//     //在线用户数量
//     public int getOnlineUserNum() {
//         Integer value = onlineUser.size();
//         return value == null ? 0 : value;
//     }
// 
//     //在线用户列表
//     public Set<String> getOnlineUserList(String publicIP, int start, int end) {
//         return onlineUser.keySet();
//     }
// 
//     public BoundHashOperations<String, String, User> getUserHash() {
//         return redisTemplate.boundHashOps(onlineUserListKey);
//     }
// }
// 
// Path: cn.ctodb.push.server/src/main/java/cn/ctodb/push/server/PushServerApp.java
// @SpringBootApplication
// @EnableAsync
// @EnableScheduling
// public class PushServerApp {
// 
//     public static void main(String[] args) {
//         SpringApplication app = new SpringApplication(PushServerApp.class);
//         app.setWebApplicationType(WebApplicationType.NONE);
//         app.run(args);
//     }
// 
// }


import cn.ctodb.push.server.UserManager;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import cn.ctodb.push.server.PushServerApp;
package cn.ctodb.push.server.test;



@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = PushServerApp.class)
public class TestUser {
    private Logger logger = LoggerFactory.getLogger(TestRedis.class);

    @Autowired
// Path: cn.ctodb.push.server/src/main/java/cn/ctodb/push/server/UserManager.java
// @Component
// public class UserManager {
// 
//     private static final Logger logger = LoggerFactory.getLogger(UserManager.class);
// 
//     private static HashMap<String, ChannelHandlerContext> onlineUser = new HashMap<>();
// 
//     @Autowired
//     private RedisTemplate<String, String> redisTemplate;
//     @Autowired
//     private MgsServer mgsServer;
// 
//     private final String onlineUserListKey = "onlineUserListKey";
// 
//     public void clearUserOnlineData() {
//         redisTemplate.delete(onlineUserListKey);
//     }
// 
//     public void on(User user, ChannelHandlerContext context) {
//         // 查询是否有其他在线情况
// 
//         // 记录但前进程连接的用户信息
//         onlineUser.put(user.id, context);
//         User u = getUserHash().get(user.id);
//         if (u != null && u.servers != null) {
//             user.servers = u.servers;
//         } else {
//             user.servers = new HashSet<>();
//         }
//         user.servers.add(mgsServer.getId());
//         // 记录信息进redis
//         getUserHash().put(user.id, user);
//         logger.info("user online {}", user.id);
//     }
// 
//     public void off(String userId) {
//         User u = getUserHash().get(userId);
//         u.servers.remove(mgsServer.getId());
//         getUserHash().put(userId, u);
//         onlineUser.remove(userId).disconnect();
//         logger.info("user offline {}", userId);
//     }
// 
//     public ChannelHandlerContext getContext(String userId) {
//         return onlineUser.get(userId);
//     }
// 
//     //在线用户数量
//     public int getOnlineUserNum() {
//         Integer value = onlineUser.size();
//         return value == null ? 0 : value;
//     }
// 
//     //在线用户列表
//     public Set<String> getOnlineUserList(String publicIP, int start, int end) {
//         return onlineUser.keySet();
//     }
// 
//     public BoundHashOperations<String, String, User> getUserHash() {
//         return redisTemplate.boundHashOps(onlineUserListKey);
//     }
// }
// 
// Path: cn.ctodb.push.server/src/main/java/cn/ctodb/push/server/PushServerApp.java
// @SpringBootApplication
// @EnableAsync
// @EnableScheduling
// public class PushServerApp {
// 
//     public static void main(String[] args) {
//         SpringApplication app = new SpringApplication(PushServerApp.class);
//         app.setWebApplicationType(WebApplicationType.NONE);
//         app.run(args);
//     }
// 
// }


// Path: cn.ctodb.push.server/src/test/java/cn/ctodb/push/server/test/TestUser.java
import cn.ctodb.push.server.UserManager;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import cn.ctodb.push.server.PushServerApp;

package cn.ctodb.push.server.test;



@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = PushServerApp.class)
public class TestUser {
    private Logger logger = LoggerFactory.getLogger(TestRedis.class);

    @Autowired
    private UserManager userManager;