Skip to content

Commit e79faae

Browse files
committed
add unit test
1 parent 2358285 commit e79faae

2 files changed

Lines changed: 27 additions & 22 deletions

File tree

plugins/src/main/java/org/tron/plugins/ArchiveManifest.java

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -56,15 +56,6 @@ public class ArchiveManifest implements Callable<Boolean> {
5656

5757
private static final int CPUS = Runtime.getRuntime().availableProcessors();
5858

59-
private static final ThreadPoolExecutor EXECUTOR = new ThreadPoolExecutor(
60-
CPUS, 16 * CPUS, 1, TimeUnit.MINUTES,
61-
new ArrayBlockingQueue<>(CPUS, true), Executors.defaultThreadFactory(),
62-
new ThreadPoolExecutor.CallerRunsPolicy());
63-
64-
static {
65-
EXECUTOR.allowCoreThreadTimeOut(true);
66-
}
67-
6859
public ArchiveManifest(String src, String name, int maxManifestSize, int maxBatchSize) {
6960
this.name = name;
7061
this.srcDbPath = Paths.get(src, name);
@@ -96,20 +87,27 @@ public static org.iq80.leveldb.Options newDefaultLevelDbOptions() {
9687
}
9788

9889
public static void main(String[] args) {
90+
int code = run(args);
91+
logger.info("exit code {}.", code);
92+
System.out.printf("exit code %d.\n", code);
93+
System.exit(code);
94+
}
95+
96+
public static int run(String[] args) {
9997
Args parameters = new Args();
10098
JCommander jc = JCommander.newBuilder()
10199
.addObject(parameters)
102100
.build();
103101
jc.parse(args);
104102
if (parameters.help) {
105103
jc.usage();
106-
return;
104+
return 0;
107105
}
108106

109107
File dbDirectory = new File(parameters.databaseDirectory);
110108
if (!dbDirectory.exists()) {
111109
logger.info("Directory {} does not exist.", parameters.databaseDirectory);
112-
return;
110+
return 404;
113111
}
114112

115113
List<File> files = Arrays.stream(Objects.requireNonNull(dbDirectory.listFiles()))
@@ -118,12 +116,19 @@ public static void main(String[] args) {
118116

119117
if (files.isEmpty()) {
120118
logger.info("Directory {} does not contain any database.", parameters.databaseDirectory);
121-
return;
119+
return 0;
122120
}
123121
final long time = System.currentTimeMillis();
124122
final List<Future<Boolean>> res = new ArrayList<>();
123+
final ThreadPoolExecutor executor = new ThreadPoolExecutor(
124+
CPUS, 16 * CPUS, 1, TimeUnit.MINUTES,
125+
new ArrayBlockingQueue<>(CPUS, true), Executors.defaultThreadFactory(),
126+
new ThreadPoolExecutor.CallerRunsPolicy());
127+
128+
executor.allowCoreThreadTimeOut(true);
129+
125130
files.forEach(f -> res.add(
126-
EXECUTOR.submit(new ArchiveManifest(parameters.databaseDirectory, f.getName(),
131+
executor.submit(new ArchiveManifest(parameters.databaseDirectory, f.getName(),
127132
parameters.maxManifestSize, parameters.maxBatchSize))));
128133
int fails = res.size();
129134

@@ -140,15 +145,15 @@ public static void main(String[] args) {
140145
}
141146
}
142147

143-
EXECUTOR.shutdown();
148+
executor.shutdown();
144149
logger.info("DatabaseDirectory:{}, maxManifestSize:{}, maxBatchSize:{},"
145150
+ "database reopen use {} seconds total.",
146151
parameters.databaseDirectory, parameters.maxManifestSize, parameters.maxBatchSize,
147152
(System.currentTimeMillis() - time) / 1000);
148153
if (fails > 0) {
149154
logger.error("Failed!!!!!!!!!!!!!!!!!!!!!!!! size:{}", fails);
150155
}
151-
System.exit(fails);
156+
return fails;
152157
}
153158

154159
public void open() throws IOException {

plugins/src/test/java/org/tron/plugins/ArchiveManifestTest.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
import java.util.UUID;
1717

1818
import lombok.extern.slf4j.Slf4j;
19-
import org.iq80.leveldb.DB;
2019
import org.junit.AfterClass;
20+
import org.junit.Assert;
2121
import org.junit.BeforeClass;
2222
import org.junit.Test;
2323

@@ -58,27 +58,27 @@ public static void destroy() {
5858
}
5959

6060
@Test
61-
public void testMain() {
61+
public void testRun() {
6262
String[] args = new String[] { "-d", OUTPUT_DIRECTORY };
63-
ArchiveManifest.main(args);
63+
Assert.assertEquals(0, ArchiveManifest.run(args));
6464
}
6565

6666
@Test
6767
public void testHelp() {
6868
String[] args = new String[] {"-h"};
69-
ArchiveManifest.main(args);
69+
Assert.assertEquals(0, ArchiveManifest.run(args));
7070
}
7171

7272
@Test
7373
public void testMaxManifest() {
7474
String[] args = new String[] {"-d", OUTPUT_DIRECTORY, "-m", "128"};
75-
ArchiveManifest.main(args);
75+
Assert.assertEquals(0, ArchiveManifest.run(args));
7676
}
7777

7878
@Test
7979
public void testNotExist() {
8080
String[] args = new String[] {"-d", OUTPUT_DIRECTORY + File.separator + UUID.randomUUID()};
81-
ArchiveManifest.main(args);
81+
Assert.assertEquals(404, ArchiveManifest.run(args));
8282
}
8383

8484
@Test
@@ -87,7 +87,7 @@ public void testEmpty() {
8787
file.mkdirs();
8888
file.deleteOnExit();
8989
String[] args = new String[] {"-d", file.toString()};
90-
ArchiveManifest.main(args);
90+
Assert.assertEquals(0, ArchiveManifest.run(args));
9191
}
9292

9393
private static void writeProperty(String filename, String key, String value) throws IOException {

0 commit comments

Comments
 (0)