summaryrefslogtreecommitdiffstats
path: root/testutil/src/main/java/com/yahoo/vespa/test/file/UnixUidGidAttributeProvider.java
diff options
context:
space:
mode:
Diffstat (limited to 'testutil/src/main/java/com/yahoo/vespa/test/file/UnixUidGidAttributeProvider.java')
-rw-r--r--testutil/src/main/java/com/yahoo/vespa/test/file/UnixUidGidAttributeProvider.java23
1 files changed, 22 insertions, 1 deletions
diff --git a/testutil/src/main/java/com/yahoo/vespa/test/file/UnixUidGidAttributeProvider.java b/testutil/src/main/java/com/yahoo/vespa/test/file/UnixUidGidAttributeProvider.java
index 2b1b0231b4f..13c51851540 100644
--- a/testutil/src/main/java/com/yahoo/vespa/test/file/UnixUidGidAttributeProvider.java
+++ b/testutil/src/main/java/com/yahoo/vespa/test/file/UnixUidGidAttributeProvider.java
@@ -72,7 +72,8 @@ public class UnixUidGidAttributeProvider extends AttributeProvider {
}
private int getUniqueId(UserPrincipal user) {
- return idCache.computeIfAbsent(user, id -> maybeNumber(id.getName()).orElseGet(uidGenerator::incrementAndGet));
+ return maybeNumber(user.getName())
+ .orElseGet(() -> idCache.computeIfAbsent(user, id -> uidGenerator.incrementAndGet()));
}
@SuppressWarnings("unchecked")
@@ -106,6 +107,14 @@ public class UnixUidGidAttributeProvider extends AttributeProvider {
@Override
public void set(File file, String view, String attribute, Object value, boolean create) {
+ switch (attribute) {
+ case "uid":
+ file.setAttribute("owner", "owner", new BasicUserPrincipal(String.valueOf(value)));
+ return;
+ case "gid":
+ file.setAttribute("posix", "group", new BasicGroupPrincipal(String.valueOf(value)));
+ return;
+ }
throw unsettable(view, attribute);
}
@@ -158,4 +167,16 @@ public class UnixUidGidAttributeProvider extends AttributeProvider {
return Optional.empty();
}
}
+
+ private static class BasicUserPrincipal implements UserPrincipal {
+ private final String name;
+ private BasicUserPrincipal(String name) { this.name = name; }
+
+ @Override public String getName() { return name; }
+ @Override public String toString() { return name; }
+ }
+
+ private static class BasicGroupPrincipal extends BasicUserPrincipal implements GroupPrincipal {
+ private BasicGroupPrincipal(String name) { super(name); }
+ }
}