增加流量监测和假种检测功能

Change-Id: I808ce14b6f08565f797f4681a6f72db9c730d011
diff --git a/src/test/java/trackertest/TrackerTest.java b/src/test/java/trackertest/TrackerTest.java
index 2aeffdb..0d324db 100644
--- a/src/test/java/trackertest/TrackerTest.java
+++ b/src/test/java/trackertest/TrackerTest.java
@@ -83,60 +83,64 @@
         if (em != null && em.isOpen()) em.close();
         if (emf != null && emf.isOpen()) emf.close();
     }
-    /*
-    @TestFactory
-    Collection<DynamicTest> testAddUpLoad() {
-        Random rnd = new Random();
-        String ih = infoHashes.get(0);
-        return userIds.stream()
-            .map(uid -> DynamicTest.dynamicTest("AddUpLoad for user " + uid, () -> {
-                EntityTransaction tx = em.getTransaction();
-                tx.begin();
-                try {
-                    // 获取该用户当前的总上传量
-                    Long currentUserUpload = em.createQuery(
-                        "SELECT COALESCE(u.upload,0) FROM UserPT u WHERE u.userid = :uid", Long.class
-                    ).setParameter("uid", uid).getSingleResult();
-                    
-                    // 获取该用户在该种子上的当前上传量
-                    Long currentSeedUpload = em.createQuery(
-                        "SELECT COALESCE(SUM(t.upload),0) FROM TransRecord t WHERE t.uploaduserid = :uid AND t.seedid = " +
-                        "(SELECT s.seedId FROM SeedHash s WHERE s.infoHash = :ih)", Long.class
-                    ).setParameter("uid", uid).setParameter("ih", ih).getSingleResult();
-                    
-                    int delta = rnd.nextInt(1000) + 1;
-                    long newSeedTotal = currentSeedUpload + delta;
-                    
-                    Assertions.assertFalse(tracker.AddUpLoad(uid, (int)newSeedTotal, ih),
-                        "AddUpLoad should return false on successful operation");
-                    em.clear();
+    
+//     @TestFactory
+//     Collection<DynamicTest> testAddUpLoad() {
+//     Random rnd = new Random();
+//     String ih = infoHashes.get(0);
+//     return userIds.stream()
+//         .map(uid -> DynamicTest.dynamicTest("AddUpLoad for user " + uid, () -> {
+//             // 1) 获取该用户当前的总上传量
+//             Long currentUserUpload = em.createQuery(
+//                 "SELECT u.upload FROM UserPT u WHERE u.userid = :uid", Long.class)
+//                 .setParameter("uid", uid)
+//                 .getSingleResult();
 
-                    // commit & restart test TX so we see the data that tracker committed
-                    tx.commit();
-                    em.clear();
-                    tx.begin();
+//             // 2) 获取该用户在该种子上的当前上传量
+//             Long currentSeedUpload = em.createQuery(
+//                 "SELECT COALESCE(SUM(t.upload),0) FROM TransRecord t " +
+//                 "WHERE t.uploaduserid = :uid AND t.seedid = " +
+//                 "(SELECT s.seedId FROM SeedHash s WHERE s.infoHash = :ih)", Long.class)
+//                 .setParameter("uid", uid)
+//                 .setParameter("ih", ih)
+//                 .getSingleResult();
 
-                    // 验证 UserPT.upload 是否等于 TransRecord 表中该用户的实际总和
-                    Long actualTransRecordSum = em.createQuery(
-                        "SELECT COALESCE(SUM(t.upload),0) FROM TransRecord t WHERE t.uploaduserid = :uid", Long.class
-                    ).setParameter("uid", uid).getSingleResult();
-                    
-                    Long userPTUpload = em.createQuery(
-                        "SELECT u.upload FROM UserPT u WHERE u.userid = :uid", Long.class
-                    ).setParameter("uid", uid).getSingleResult();
-                    
-                    Assertions.assertEquals(actualTransRecordSum, userPTUpload, 
-                        "UserPT.upload should equal sum of TransRecord.upload for this user");
-                    Assertions.assertEquals(currentUserUpload + delta, userPTUpload.longValue(),
-                        "User total upload should increase by delta");
-                } finally {
-                    tx.rollback();
-                    em.clear();
-                }
-            }))
-            .collect(Collectors.toList());
-    }
-    */
+//             int delta = rnd.nextInt(1000) + 1;
+//             long newSeedTotal = currentSeedUpload + delta;
+
+//             // 调用业务方法(内部自管理事务)
+//             Assertions.assertFalse(
+//                 tracker.AddUpLoad(uid, (int)newSeedTotal, ih),
+//                 "AddUpLoad should return false on successful operation"
+//             );
+//             em.clear();
+
+//             // 验证 TransRecord 表中的实际总和
+//             Long actualTransRecordSum = em.createQuery(
+//                 "SELECT COALESCE(SUM(t.upload),0) FROM TransRecord t WHERE t.uploaduserid = :uid", Long.class)
+//                 .setParameter("uid", uid)
+//                 .getSingleResult();
+//             // 验证 UserPT.upload
+//             Long userPTUpload = em.createQuery(
+//                 "SELECT u.upload FROM UserPT u WHERE u.userid = :uid", Long.class)
+//                 .setParameter("uid", uid)
+//                 .getSingleResult();
+
+//             Assertions.assertEquals(
+//                 actualTransRecordSum, userPTUpload,
+//                 "UserPT.upload 应等于 TransRecord 中的总和"
+//             );
+//             Assertions.assertEquals(
+//                 currentUserUpload + delta, userPTUpload.longValue(),
+//                 "UserPT.upload 应增加 delta"
+//             );
+
+//             // 恢复原始上传量,避免测试污染
+//             Assertions.assertFalse(tracker.ReduceUpLoad(uid, delta));
+//         }))
+//         .collect(Collectors.toList());
+// }
+    
    
    
     // @TestFactory