Repository: aurora
Updated Branches:
  refs/heads/master e817eb11d -> 170a7d2f9


Fixing e2e tests.

Reviewed at https://reviews.apache.org/r/46795/


Project: http://git-wip-us.apache.org/repos/asf/aurora/repo
Commit: http://git-wip-us.apache.org/repos/asf/aurora/commit/170a7d2f
Tree: http://git-wip-us.apache.org/repos/asf/aurora/tree/170a7d2f
Diff: http://git-wip-us.apache.org/repos/asf/aurora/diff/170a7d2f

Branch: refs/heads/master
Commit: 170a7d2f9ebf17ee4aecbde619a13022b705fd7f
Parents: e817eb1
Author: Maxim Khutornenko <[email protected]>
Authored: Thu Apr 28 11:49:22 2016 -0700
Committer: Maxim Khutornenko <[email protected]>
Committed: Thu Apr 28 11:49:22 2016 -0700

----------------------------------------------------------------------
 .../scheduler/storage/db/DbQuotaStore.java      |  2 +-
 .../scheduler/storage/db/TaskConfigManager.java |  2 +-
 .../scheduler/storage/db/TaskConfigMapper.java  |  3 ++-
 .../V005_CreateQuotaResourceTable.java          |  2 +-
 .../storage/db/views/DBResourceAggregate.java   |  9 ++++-----
 .../scheduler/storage/log/ThriftBackfill.java   | 13 ++++++++++++
 .../scheduler/storage/db/TaskConfigMapper.xml   |  6 +++---
 .../aurora/scheduler/storage/db/schema.sql      |  2 +-
 .../storage/log/ThriftBackfillTest.java         | 21 ++++++++++++++++++++
 9 files changed, 47 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/aurora/blob/170a7d2f/src/main/java/org/apache/aurora/scheduler/storage/db/DbQuotaStore.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/aurora/scheduler/storage/db/DbQuotaStore.java 
b/src/main/java/org/apache/aurora/scheduler/storage/db/DbQuotaStore.java
index e7afbad..0ea21b5 100644
--- a/src/main/java/org/apache/aurora/scheduler/storage/db/DbQuotaStore.java
+++ b/src/main/java/org/apache/aurora/scheduler/storage/db/DbQuotaStore.java
@@ -76,7 +76,7 @@ class DbQuotaStore implements QuotaStore.Mutable {
     mapper.insert(role, quota.newBuilder(), quotaInsert);
     mapper.insertResources(
         quotaInsert.getId(),
-        DBResourceAggregate.mapFromResources(quota.getResources()));
+        
Pairs.toMap(DBResourceAggregate.pairsFromResources(quota.getResources())));
 
   }
 }

http://git-wip-us.apache.org/repos/asf/aurora/blob/170a7d2f/src/main/java/org/apache/aurora/scheduler/storage/db/TaskConfigManager.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/aurora/scheduler/storage/db/TaskConfigManager.java 
b/src/main/java/org/apache/aurora/scheduler/storage/db/TaskConfigManager.java
index 07bdf22..9eadf70 100644
--- 
a/src/main/java/org/apache/aurora/scheduler/storage/db/TaskConfigManager.java
+++ 
b/src/main/java/org/apache/aurora/scheduler/storage/db/TaskConfigManager.java
@@ -99,7 +99,7 @@ class TaskConfigManager {
     if (!config.getResources().isEmpty()) {
       configMapper.insertResources(
           configInsert.getId(),
-          DBResourceAggregate.mapFromResources(config.getResources()));
+          DBResourceAggregate.pairsFromResources(config.getResources()));
     }
 
     if (!config.getRequestedPorts().isEmpty()) {

http://git-wip-us.apache.org/repos/asf/aurora/blob/170a7d2f/src/main/java/org/apache/aurora/scheduler/storage/db/TaskConfigMapper.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/aurora/scheduler/storage/db/TaskConfigMapper.java 
b/src/main/java/org/apache/aurora/scheduler/storage/db/TaskConfigMapper.java
index 6e06af4..5712010 100644
--- a/src/main/java/org/apache/aurora/scheduler/storage/db/TaskConfigMapper.java
+++ b/src/main/java/org/apache/aurora/scheduler/storage/db/TaskConfigMapper.java
@@ -17,6 +17,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.aurora.common.collections.Pair;
 import org.apache.aurora.scheduler.storage.db.views.DbTaskConfig;
 import org.apache.aurora.scheduler.storage.entities.IConstraint;
 import org.apache.aurora.scheduler.storage.entities.IDockerContainer;
@@ -183,5 +184,5 @@ interface TaskConfigMapper extends 
GarbageCollectedTableMapper {
    */
   void insertResources(
       @Param("configId") long configId,
-      @Param("values") Map<Integer, String> values);
+      @Param("values") List<Pair<Integer, String>> values);
 }

http://git-wip-us.apache.org/repos/asf/aurora/blob/170a7d2f/src/main/java/org/apache/aurora/scheduler/storage/db/migration/V005_CreateQuotaResourceTable.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/aurora/scheduler/storage/db/migration/V005_CreateQuotaResourceTable.java
 
b/src/main/java/org/apache/aurora/scheduler/storage/db/migration/V005_CreateQuotaResourceTable.java
index e9e5de1..cd06346 100644
--- 
a/src/main/java/org/apache/aurora/scheduler/storage/db/migration/V005_CreateQuotaResourceTable.java
+++ 
b/src/main/java/org/apache/aurora/scheduler/storage/db/migration/V005_CreateQuotaResourceTable.java
@@ -36,7 +36,7 @@ public class V005_CreateQuotaResourceTable implements 
MigrationScript {
         + "quota_id BIGINT NOT NULL REFERENCES quotas(id) ON DELETE CASCADE,"
         + "type_id INT NOT NULL REFERENCES resource_types(id),"
         + "value VARCHAR NOT NULL,"
-        + "UNIQUE(quota_id, type_id, value)"
+        + "UNIQUE(quota_id, type_id)"
         + ");\n"
         + migrateScript();
   }

http://git-wip-us.apache.org/repos/asf/aurora/blob/170a7d2f/src/main/java/org/apache/aurora/scheduler/storage/db/views/DBResourceAggregate.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/aurora/scheduler/storage/db/views/DBResourceAggregate.java
 
b/src/main/java/org/apache/aurora/scheduler/storage/db/views/DBResourceAggregate.java
index 4f5c07e..8c5d1f0 100644
--- 
a/src/main/java/org/apache/aurora/scheduler/storage/db/views/DBResourceAggregate.java
+++ 
b/src/main/java/org/apache/aurora/scheduler/storage/db/views/DBResourceAggregate.java
@@ -14,10 +14,9 @@
 package org.apache.aurora.scheduler.storage.db.views;
 
 import java.util.List;
-import java.util.Map;
 import java.util.Set;
-import java.util.stream.Collectors;
 
+import org.apache.aurora.GuavaUtils;
 import org.apache.aurora.common.collections.Pair;
 import org.apache.aurora.gen.ResourceAggregate;
 import org.apache.aurora.scheduler.resources.ResourceType;
@@ -43,12 +42,12 @@ public final class DBResourceAggregate {
         
.setResources(resources.stream().map(DBResource::toThrift).collect(toImmutableSet()));
   }
 
-  public static Map<Integer, String> mapFromResources(Set<IResource> 
resources) {
-    return Pairs.toMap(resources.stream()
+  public static List<Pair<Integer, String>> pairsFromResources(Set<IResource> 
resources) {
+    return resources.stream()
         .map(e -> Pair.of(
             ResourceType.fromResource(e).getValue(),
             
ResourceType.fromResource(e).getTypeConverter().stringify(e.getRawValue())))
-        .collect(Collectors.toList()));
+        .collect(GuavaUtils.toImmutableList());
   }
 
   public IResourceAggregate toImmutable() {

http://git-wip-us.apache.org/repos/asf/aurora/blob/170a7d2f/src/main/java/org/apache/aurora/scheduler/storage/log/ThriftBackfill.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/aurora/scheduler/storage/log/ThriftBackfill.java 
b/src/main/java/org/apache/aurora/scheduler/storage/log/ThriftBackfill.java
index ad45085..d1c62a8 100644
--- a/src/main/java/org/apache/aurora/scheduler/storage/log/ThriftBackfill.java
+++ b/src/main/java/org/apache/aurora/scheduler/storage/log/ThriftBackfill.java
@@ -13,7 +13,9 @@
  */
 package org.apache.aurora.scheduler.storage.log;
 
+import java.util.EnumSet;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 import org.apache.aurora.GuavaUtils;
 import org.apache.aurora.gen.JobConfiguration;
@@ -117,6 +119,17 @@ public final class ThriftBackfill {
       aggregate.addToResources(Resource.ramMb(aggregate.getRamMb()));
       aggregate.addToResources(Resource.diskMb(aggregate.getDiskMb()));
     } else {
+      EnumSet<ResourceType> quotaResources = EnumSet.of(CPUS, RAM_MB, DISK_MB);
+      if (aggregate.getResources().size() > quotaResources.size()) {
+        throw new IllegalArgumentException("Too many resource values in 
quota.");
+      }
+
+      if (!quotaResources.equals(aggregate.getResources().stream()
+              .map(e -> ResourceType.fromResource(IResource.build(e)))
+              .collect(Collectors.toSet()))) {
+
+        throw new IllegalArgumentException("Quota resources must be exactly: " 
+ quotaResources);
+      }
       aggregate.setNumCpus(getResource(aggregate.getResources(), 
CPUS).getNumCpus());
       aggregate.setRamMb(getResource(aggregate.getResources(), 
RAM_MB).getRamMb());
       aggregate.setDiskMb(getResource(aggregate.getResources(), 
DISK_MB).getDiskMb());

http://git-wip-us.apache.org/repos/asf/aurora/blob/170a7d2f/src/main/resources/org/apache/aurora/scheduler/storage/db/TaskConfigMapper.xml
----------------------------------------------------------------------
diff --git 
a/src/main/resources/org/apache/aurora/scheduler/storage/db/TaskConfigMapper.xml
 
b/src/main/resources/org/apache/aurora/scheduler/storage/db/TaskConfigMapper.xml
index 6b5e130..cd181bb 100644
--- 
a/src/main/resources/org/apache/aurora/scheduler/storage/db/TaskConfigMapper.xml
+++ 
b/src/main/resources/org/apache/aurora/scheduler/storage/db/TaskConfigMapper.xml
@@ -284,10 +284,10 @@
       type_id,
       value
     ) VALUES (
-      <foreach index="type" item="value" collection="values" separator="),(">
+      <foreach item="value" collection="values" separator="),(">
         #{configId},
-        #{type},
-        #{value}
+        #{value.first},
+        #{value.second}
       </foreach>
     )
   </insert>

http://git-wip-us.apache.org/repos/asf/aurora/blob/170a7d2f/src/main/resources/org/apache/aurora/scheduler/storage/db/schema.sql
----------------------------------------------------------------------
diff --git 
a/src/main/resources/org/apache/aurora/scheduler/storage/db/schema.sql 
b/src/main/resources/org/apache/aurora/scheduler/storage/db/schema.sql
index 5d905db..5069bed 100644
--- a/src/main/resources/org/apache/aurora/scheduler/storage/db/schema.sql
+++ b/src/main/resources/org/apache/aurora/scheduler/storage/db/schema.sql
@@ -122,7 +122,7 @@ CREATE TABLE quota_resource(
   type_id INT NOT NULL REFERENCES resource_types(id),
   value VARCHAR NOT NULL,
 
-  UNIQUE(quota_id, type_id, value)
+  UNIQUE(quota_id, type_id)
 );
 
 CREATE TABLE task_constraints(

http://git-wip-us.apache.org/repos/asf/aurora/blob/170a7d2f/src/test/java/org/apache/aurora/scheduler/storage/log/ThriftBackfillTest.java
----------------------------------------------------------------------
diff --git 
a/src/test/java/org/apache/aurora/scheduler/storage/log/ThriftBackfillTest.java 
b/src/test/java/org/apache/aurora/scheduler/storage/log/ThriftBackfillTest.java
index f213b7f..0a2cd3d 100644
--- 
a/src/test/java/org/apache/aurora/scheduler/storage/log/ThriftBackfillTest.java
+++ 
b/src/test/java/org/apache/aurora/scheduler/storage/log/ThriftBackfillTest.java
@@ -121,4 +121,25 @@ public class ThriftBackfillTest {
 
     assertEquals(expected, 
ThriftBackfill.backfillResourceAggregate(aggregate));
   }
+
+  @Test(expected = IllegalArgumentException.class)
+  public void testResourceAggregateTooManyResources() {
+    ResourceAggregate aggregate = new ResourceAggregate()
+        .setResources(ImmutableSet.of(numCpus(1.0), ramMb(32), diskMb(64), 
numCpus(2.0)));
+    ThriftBackfill.backfillResourceAggregate(aggregate);
+  }
+
+  @Test(expected = IllegalArgumentException.class)
+  public void testResourceAggregateInvalidResources() {
+    ResourceAggregate aggregate = new ResourceAggregate()
+        .setResources(ImmutableSet.of(numCpus(1.0), ramMb(32), 
namedPort("http")));
+    ThriftBackfill.backfillResourceAggregate(aggregate);
+  }
+
+  @Test(expected = IllegalArgumentException.class)
+  public void testResourceAggregateMissingResources() {
+    ResourceAggregate aggregate = new ResourceAggregate()
+        .setResources(ImmutableSet.of(numCpus(1.0), ramMb(32)));
+    ThriftBackfill.backfillResourceAggregate(aggregate);
+  }
 }

Reply via email to