修改Profile实体类
Change-Id: I80babce4a02945e98c4608ef04f3f33f77aeb698
diff --git a/src/test/java/trackertest/TrackerTest.java b/src/test/java/trackertest/TrackerTest.java
index 104f017..8f45a4a 100644
--- a/src/test/java/trackertest/TrackerTest.java
+++ b/src/test/java/trackertest/TrackerTest.java
@@ -1,5 +1,4 @@
package trackertest;
-
import java.io.File;
import java.util.Collection;
import java.util.HashMap;
@@ -9,31 +8,26 @@
import java.util.UUID;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
-
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
-
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.DynamicTest;
import org.junit.jupiter.api.TestFactory;
-
import entity.Seed;
import entity.TransRecord;
import entity.TransportId;
import entity.config;
import tracker.Tracker;
-
public class TrackerTest {
private static EntityManagerFactory emf;
private static EntityManager em;
private static List<String> userIds;
private static Map<String, Long> originalUploads;
private static Tracker tracker;
-
@BeforeAll
static void setup() throws Exception {
// 强制加载 MySQL 驱动,否则无法建立连接
@@ -54,7 +48,6 @@
userIds = em.createQuery(
"select u.userid from UserPT u", String.class
).getResultList();
-
// 保存初始 upload 值
originalUploads = new HashMap<>();
for (String uid : userIds) {
@@ -66,7 +59,6 @@
}
tracker = new Tracker(emf);
}
-
@AfterAll
static void teardown() {
// 清理:删除测试过程中保存的所有 torrent 文件
@@ -81,11 +73,9 @@
}
}
}
-
if (em != null && em.isOpen()) em.close();
if (emf != null && emf.isOpen()) emf.close();
}
-
@TestFactory
Collection<DynamicTest> testAddUpLoad() {
Random rnd = new Random();
@@ -99,7 +89,6 @@
Assertions.assertFalse(tracker.AddUpLoad(uid, delta),
"AddUpLoad should return false on successful operation");
System.out.println("AddUpLoad assert passed for user=" + uid);
-
// Clear the persistence context to ensure fresh data is fetched
em.clear();
@@ -108,7 +97,6 @@
"select u.upload from UserPT u where u.userid = :uid", Long.class
).setParameter("uid", uid)
.getSingleResult();
-
// upload 值断言前打印
System.out.println("Running upload-value assert for user=" + uid);
Assertions.assertEquals(before + delta, after,
@@ -123,7 +111,6 @@
}))
.collect(Collectors.toList());
}
-
@TestFactory
Collection<DynamicTest> testReduceUpLoad() {
Random rnd = new Random();
@@ -133,22 +120,18 @@
int max = (int)Math.min(before, 1000);
int delta = max > 0 ? rnd.nextInt(max) + 1 : 0;
if (delta == 0) return; // 无可减量时跳过
-
// ReduceUpLoad 前打印
System.out.println("Running ReduceUpLoad assert for user=" + uid + ", delta=" + delta);
Assertions.assertFalse(tracker.ReduceUpLoad(uid, delta));
System.out.println("ReduceUpLoad assert passed for user=" + uid);
-
Long after = em.createQuery(
"select u.upload from UserPT u where u.userid = :uid", Long.class
).setParameter("uid", uid)
.getSingleResult();
-
// 减少后值断言前打印
System.out.println("Running post-reduce-value assert for user=" + uid);
Assertions.assertEquals(before - delta, after);
System.out.println("Post-reduce-value assert passed for user=" + uid);
-
// 回滚 AddUpLoad 前打印
System.out.println("Running rollback AddUpLoad assert for user=" + uid + ", delta=" + delta);
Assertions.assertFalse(tracker.AddUpLoad(uid, delta));
@@ -156,7 +139,6 @@
}))
.collect(Collectors.toList());
}
-
@TestFactory
Collection<DynamicTest> testAddDownload() {
Random rnd = new Random();
@@ -167,26 +149,22 @@
"select u.download from UserPT u where u.userid = :uid", Long.class
).setParameter("uid", uid).getSingleResult();
before = before != null ? before : 0L;
-
System.out.println("Running AddDownload assert for user=" + uid + ", delta=" + delta);
Assertions.assertFalse(tracker.AddDownload(uid, delta),
"AddDownload should return false on successful operation");
em.clear();
-
Long after = em.createQuery(
"select u.download from UserPT u where u.userid = :uid", Long.class
).setParameter("uid", uid).getSingleResult();
System.out.println("Running download-value assert for user=" + uid);
Assertions.assertEquals(before + delta, after,
"Download value should be increased by " + delta);
-
System.out.println("Running rollback ReduceDownload assert for user=" + uid + ", delta=" + delta);
Assertions.assertFalse(tracker.ReduceDownload(uid, delta),
"Rollback ReduceDownload should return false");
}))
.collect(Collectors.toList());
}
-
@TestFactory
Collection<DynamicTest> testReduceDownload() {
Random rnd = new Random();
@@ -199,7 +177,6 @@
int max = before.intValue();
int delta = max > 0 ? rnd.nextInt(max) + 1 : 0;
if (delta == 0) return;
-
System.out.println("Running ReduceDownload assert for user=" + uid + ", delta=" + delta);
Assertions.assertFalse(tracker.ReduceDownload(uid, delta));
Long after = em.createQuery(
@@ -207,13 +184,11 @@
).setParameter("uid", uid).getSingleResult();
System.out.println("Running post-reduce-download-value assert for user=" + uid);
Assertions.assertEquals(before - delta, after);
-
System.out.println("Running rollback AddDownload assert for user=" + uid + ", delta=" + delta);
Assertions.assertFalse(tracker.AddDownload(uid, delta));
}))
.collect(Collectors.toList());
}
-
@TestFactory
Collection<DynamicTest> testAddMagic() {
Random rnd = new Random();
@@ -224,23 +199,19 @@
"select u.magic from UserPT u where u.userid = :uid", Integer.class
).setParameter("uid", uid).getSingleResult();
before = before != null ? before : 0;
-
System.out.println("Running AddMagic assert for user=" + uid + ", delta=" + delta);
Assertions.assertFalse(tracker.AddMagic(uid, delta));
em.clear();
-
Integer after = em.createQuery(
"select u.magic from UserPT u where u.userid = :uid", Integer.class
).setParameter("uid", uid).getSingleResult();
System.out.println("Running magic-value assert for user=" + uid);
Assertions.assertEquals(before + delta, after.intValue());
-
System.out.println("Running rollback ReduceMagic assert for user=" + uid + ", delta=" + delta);
Assertions.assertFalse(tracker.ReduceMagic(uid, delta));
}))
.collect(Collectors.toList());
}
-
@TestFactory
Collection<DynamicTest> testReduceMagic() {
Random rnd = new Random();
@@ -253,7 +224,6 @@
int max = before.intValue();
int delta = max > 0 ? rnd.nextInt(max) + 1 : 0;
if (delta == 0) return;
-
System.out.println("Running ReduceMagic assert for user=" + uid + ", delta=" + delta);
Assertions.assertFalse(tracker.ReduceMagic(uid, delta));
Integer after = em.createQuery(
@@ -261,13 +231,11 @@
).setParameter("uid", uid).getSingleResult();
System.out.println("Running post-reduce-magic-value assert for user=" + uid);
Assertions.assertEquals(before - delta, after.intValue());
-
System.out.println("Running rollback AddMagic assert for user=" + uid + ", delta=" + delta);
Assertions.assertFalse(tracker.AddMagic(uid, delta));
}))
.collect(Collectors.toList());
}
-
@TestFactory
Collection<DynamicTest> testAddRecord() {
Random rnd = new Random();
@@ -286,7 +254,6 @@
String downloaderId = userIds.get(rnd.nextInt(userIds.size()));
String seedId = seedIds.get(rnd.nextInt(seedIds.size()));
String taskId = UUID.randomUUID().toString();
-
TransRecord rd = new TransRecord();
rd.taskid = taskId;
rd.uploaduserid = uploaderId;
@@ -296,16 +263,13 @@
rd.download = rnd.nextInt(10000);
rd.maxupload = rd.upload + rnd.nextInt(10000);
rd.maxdownload = rd.download + rnd.nextInt(10000);
-
// 调用待测方法
int ret = tracker.AddRecord(rd);
Assertions.assertTrue(ret > 0, "返回值应为新记录主键");
-
// 验证已插入
TransportId pk = new TransportId(taskId, uploaderId, downloaderId);
TransRecord fetched = em.find(TransRecord.class, pk);
Assertions.assertNotNull(fetched, "应查询到新增的 TransRecord");
-
// 清理:删除测试记录
EntityTransaction tx = em.getTransaction();
tx.begin();
@@ -314,7 +278,6 @@
}))
.collect(Collectors.toList());
}
-
@TestFactory
Collection<DynamicTest> testSaveTorrent() {
List<String> seedIds = em.createQuery(
@@ -327,12 +290,10 @@
// 调用 SaveTorrent
int ret = tracker.SaveTorrent(sid, temp);
Assertions.assertEquals(0, ret, "SaveTorrent 应返回 0");
-
// 验证文件已按约定存储
File stored = new File(config.TORRENT_STORAGE_DIR,
sid + "_" + temp.getName());
Assertions.assertTrue(stored.exists(), "存储文件应存在");
-
// 验证数据库中 url 字段已更新
em.clear();
Seed seed = em.find(Seed.class, sid);
@@ -342,14 +303,12 @@
new File(seed.url).getAbsolutePath(),
"Seed.url 应更新为存储路径"
);
-
// 清理测试文件
stored.delete();
temp.delete();
}))
.collect(Collectors.toList());
}
-
@TestFactory
Collection<DynamicTest> testGetTTorent() {
// 拿到所有 seedid
@@ -362,12 +321,10 @@
File temp = File.createTempFile(sid + "_test", ".torrent");
int saveRet = tracker.SaveTorrent(sid, temp);
Assertions.assertEquals(0, saveRet, "SaveTorrent 应返回 0");
-
// 刷新上下文并取回更新后的 seed 实体
em.clear();
Seed seed = em.find(Seed.class, sid);
Assertions.assertNotNull(seed.url, "Seed.url 应已被更新");
-
// 调用 GetTTorent 并断言路径一致
String uid = userIds.get(0), ip = "127.0.0.1";
File ret = tracker.GetTTorent(sid, uid, ip);
@@ -378,7 +335,6 @@
ret.getAbsolutePath(),
"返回文件路径应与Seed.url一致"
);
-
// 清理:删掉本地文件,回滚 DB url 字段,删掉 temp
expected.delete();
EntityTransaction tx = em.getTransaction();
@@ -390,4 +346,4 @@
}))
.collect(Collectors.toList());
}
-}
+}
\ No newline at end of file