我正在编写一些代码来每分钟创建和运行 18000 个测试,持续 24 小时,并将结果存储在.dat
我可以执行的文件中。
我的下一个任务是在每小时开始时获取时间戳、设备 ID 和随机测试 ID 并将其存储在一个.idx
文件中,因此它只有 24 行数据。
我遇到了麻烦。我可以让它在每小时开始时打印结果,但它也会打印每次测试的结果,而我只希望它在每小时开始时进行随机测试。
这是我到目前为止所做的;
public static void main (String [] args) throws FileNotFoundException
{
DateFormat df = new SimpleDateFormat("dd-MM-yyyy");
Date date = new Date();
File fileNameDat = new File(df.format(date) + ".dat");
File fileNameIdx = new File(df.format(date) + ".idx");
RandomAccessFile rafDat = new RandomAccessFile(fileNameDat, "rw");
RandomAccessFile rafIdx = new RandomAccessFile(fileNameIdx, "rw");
Random rand = new Random();
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
cal.add(Calendar.MILLISECOND, -cal.get(Calendar.MILLISECOND));
cal.add(Calendar.SECOND, -cal.get(Calendar.SECOND));
cal.add(Calendar.MINUTE, -cal.get(Calendar.MINUTE));
cal.add(Calendar.HOUR_OF_DAY, -cal.get(Calendar.HOUR_OF_DAY));
try
{
for(int hours = 0; hours < 24; hours++)
{
for(int tests = 1; tests <= 10; tests++) //18000 tests in total
{
for(int mins = 0; mins < 60; mins++)
{
rafDat.writeLong(cal.getTimeInMillis() + mins * 60000); //Timestamp
rafDat.writeInt(283); //Device ID
rafDat.writeInt(tests); //Test ID
rafDat.write((byte)1); //Availability
rafDat.writeInt(rand.nextInt(500)); //Latency
}
if(cal.get(Calendar.MILLISECOND) == 0 && cal.get(Calendar.SECOND) == 0 && cal.get(Calendar.MINUTE) == 0 && tests <= 2)
{
rafIdx.writeLong(cal.getTimeInMillis());
rafIdx.writeInt(0);
rafIdx.writeInt(rand.nextInt(tests));
}
}
cal.add(Calendar.HOUR_OF_DAY, 1);
}
rafDat.close();
rafIdx.close();
}
catch(IOException iOE)
{
System.err.println(iOE);
}
}