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 }