1 package org.kuali.common.devops.archive.sweep.test;
2
3 import static com.google.common.collect.Lists.newArrayList;
4 import static java.lang.String.format;
5 import static java.lang.System.currentTimeMillis;
6 import static java.util.Arrays.asList;
7 import static org.kuali.common.devops.archive.sweep.Functions.unixAttributesAsMap;
8 import static org.kuali.common.util.encrypt.Encryption.getDefaultEncryptor;
9 import static org.kuali.common.util.log.LoggerUtils.logTable;
10 import static org.kuali.common.util.log.Loggers.newLogger;
11
12 import java.util.List;
13 import java.util.Map;
14
15 import org.junit.Test;
16 import org.kuali.common.aws.model.ImmutableAWSCredentials;
17 import org.kuali.common.aws.s3.DefaultS3Service;
18 import org.kuali.common.aws.s3.S3Service;
19 import org.kuali.common.aws.s3.model.ObjectMetadata;
20 import org.kuali.common.aws.s3.model.PutDirRequest;
21 import org.kuali.common.devops.archive.sweep.model.UnixAttributes;
22 import org.kuali.common.util.encrypt.Encryptor;
23 import org.slf4j.Logger;
24
25 import com.amazonaws.auth.AWSCredentials;
26 import com.google.common.collect.Ordering;
27
28 public class PutDirTest {
29
30 private static final Logger logger = newLogger();
31
32 @Test
33 public void test() {
34 try {
35 String bucket = "archive.kuali.org";
36 List<String> keys = asList("org/kuali/testci/home/tomcat7/.jenkins/jobs/kdo-sweep-builds/");
37
38 UnixAttributes tomcat7 = UnixAttributes.builder().withGid(113).withMode(16877).withMtime(currentTimeMillis()).withUid(107).build();
39 Map<String, String> user = unixAttributesAsMap().apply(tomcat7);
40 ObjectMetadata meta = ObjectMetadata.builder().withUserMetadata(user).build();
41 for (String key : keys) {
42 PutDirRequest request = PutDirRequest.builder().withBucket(bucket).withKey(key).withMetadata(meta).build();
43 S3Service s3 = DefaultS3Service.build(getFoundation());
44 s3.putDirectory(request);
45 ObjectMetadata omd = s3.getMetadata(bucket, key);
46 show(key, omd.getUserMetadata());
47 }
48 } catch (Throwable e) {
49 e.printStackTrace();
50 }
51 }
52
53 private void show(String key, Map<String, ?> map) {
54 List<String> columns = asList("key", "value");
55 List<Object[]> rows = newArrayList();
56 List<String> keys = Ordering.natural().immutableSortedCopy(map.keySet());
57 for (String element : keys) {
58 rows.add(new Object[] { element, map.get(element) });
59 }
60 logTable(key, columns, rows);
61 }
62
63 private static AWSCredentials getFoundation() {
64 Encryptor enc = getDefaultEncryptor();
65 String accessKey = enc.decrypt("U2FsdGVkX19A2e6dN/ipVfb/9n0DROCPIrLK6H8PvvPmt0h6cBqccGaJW0NSoX3S");
66 String secretKey = enc.decrypt("U2FsdGVkX19Y9SZ5GAU82/X5Z0xZdeQf7DFuVDW07R9lfyHK4VaOj5R7pviRBKmIyn7jrVT2lv8Edeu7098k1A==");
67 return new ImmutableAWSCredentials(accessKey, secretKey);
68 }
69
70 protected void info(String msg, Object... args) {
71 logger.info((args == null || args.length == 0) ? msg : format(msg, args));
72 }
73
74 }