1 package org.kuali.common.devops.archive.sweep.test;
2
3 import static com.google.common.base.Stopwatch.createStarted;
4 import static java.lang.String.format;
5 import static java.util.Arrays.asList;
6 import static org.kuali.common.core.io.Files.md5;
7 import static org.kuali.common.core.io.Files.sumSizes;
8 import static org.kuali.common.util.FormatUtils.getSize;
9 import static org.kuali.common.util.FormatUtils.getTime;
10 import static org.kuali.common.util.log.Loggers.newLogger;
11
12 import java.io.File;
13 import java.io.IOException;
14 import java.util.List;
15
16 import org.junit.Test;
17 import org.kuali.common.core.base.TimedInterval;
18 import org.kuali.common.core.io.scan.DefaultScanService;
19 import org.kuali.common.core.io.scan.ScanRequest;
20 import org.kuali.common.core.io.scan.ScanResult;
21 import org.kuali.common.core.io.scan.ScanService;
22 import org.kuali.common.core.json.api.JsonService;
23 import org.kuali.common.core.json.jackson.JacksonJsonService;
24 import org.kuali.common.core.system.VirtualSystem;
25 import org.slf4j.Logger;
26
27 import com.google.common.base.Splitter;
28 import com.google.common.base.Stopwatch;
29
30 public class ScanWithMD5Test {
31
32 private static final Logger logger = newLogger();
33
34 @Test
35 public void test() {
36 try {
37 info("%s", getTime(950110));
38 VirtualSystem vs = VirtualSystem.build();
39 JsonService json = new JacksonJsonService();
40 File directory = new File(vs.getUser().getHome(), "/.jenkins");
41 List<String> includes = asList("jobs/**/builds/**");
42 ScanRequest request = ScanRequest.builder(directory).withIncludes(includes).build();
43 ScanService scanner = new DefaultScanService();
44 show(json, request);
45 ScanResult result = scanner.scan(request);
46 show(json, result.getTiming());
47 info("%s", getSize(sumSizes(result.getFiles())));
48 Stopwatch sw = createStarted();
49 List<File> files = result.getFiles();
50 for (File file : files) {
51 try {
52 md5(file);
53 } catch (IOException e) {
54 info("error -> [%s]", e);
55 }
56 }
57 TimedInterval timing = TimedInterval.build(sw);
58 show(json, timing);
59 } catch (Throwable e) {
60 e.printStackTrace();
61 }
62 }
63
64 protected <T> void show(JsonService service, T reference) {
65 String json = service.writeString(reference);
66 Iterable<String> tokens = Splitter.on('\n').split(json);
67 for (String token : tokens) {
68 info("%s", token);
69 }
70 }
71
72 protected void info(String msg, Object... args) {
73 logger.info((args == null || args.length == 0) ? msg : format(msg, args));
74 }
75
76 }