You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aurora.apache.org by jo...@apache.org on 2018/07/26 23:01:43 UTC
aurora git commit: Add size metric for memory stores,
add MemSchedulerStoreTest
Repository: aurora
Updated Branches:
refs/heads/master 4e28e73bb -> 3738c3e1a
Add size metric for memory stores, add MemSchedulerStoreTest
Currently, we only track the size metrics for:
- # of tasks via `task_store_index_(host|job)`
- # of crons via `mem_storage_cron_size`
I am hoping to add:
- # of attributes via `mem_storage_attributes_size`
- # of maintenance requests via `mem_storage_maintenance_size`
- # of job updates via `mem_storage_update_size`
- # of quotas via `mem_storage_quota_size`
This will help us track the growth of stores over time. Additionally, I added
a `MemSchedulerStoreTest` since one did not exist previously and nothing was
extending the abtract version of the test.
Reviewed at https://reviews.apache.org/r/68047/
Project: http://git-wip-us.apache.org/repos/asf/aurora/repo
Commit: http://git-wip-us.apache.org/repos/asf/aurora/commit/3738c3e1
Tree: http://git-wip-us.apache.org/repos/asf/aurora/tree/3738c3e1
Diff: http://git-wip-us.apache.org/repos/asf/aurora/diff/3738c3e1
Branch: refs/heads/master
Commit: 3738c3e1afc4b3835385116745088479a4cfac30
Parents: 4e28e73
Author: Jordan Ly <jo...@gmail.com>
Authored: Thu Jul 26 16:01:16 2018 -0700
Committer: Jordan Ly <jl...@twitter.com>
Committed: Thu Jul 26 16:01:16 2018 -0700
----------------------------------------------------------------------
.../storage/mem/MemAttributeStore.java | 11 ++++++
.../scheduler/storage/mem/MemCronJobStore.java | 4 +-
.../storage/mem/MemHostMaintenanceStore.java | 11 ++++++
.../storage/mem/MemJobUpdateStore.java | 10 +++++
.../scheduler/storage/mem/MemQuotaStore.java | 10 +++++
.../storage/AbstractAttributeStoreTest.java | 21 ++++++----
.../storage/AbstractCronJobStoreTest.java | 2 +-
.../AbstractHostMaintenanceStoreTest.java | 22 +++++++----
.../storage/AbstractJobUpdateStoreTest.java | 23 ++++++-----
.../storage/AbstractQuotaStoreTest.java | 27 +++++++------
.../storage/AbstractSchedulerStoreTest.java | 14 +++++--
.../storage/AbstractTaskStoreTest.java | 2 +-
.../storage/mem/MemAttributeStoreTest.java | 37 ++++++++++++++++--
.../storage/mem/MemCronJobStoreTest.java | 10 ++---
.../mem/MemHostMaintenanceStoreTest.java | 39 +++++++++++++++++--
.../storage/mem/MemJobUpdateStoreTest.java | 40 ++++++++++++++++----
.../storage/mem/MemQuotaStoreTest.java | 39 +++++++++++++++++--
.../storage/mem/MemSchedulerStoreTest.java | 40 ++++++++++++++++++++
18 files changed, 296 insertions(+), 66 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/aurora/blob/3738c3e1/src/main/java/org/apache/aurora/scheduler/storage/mem/MemAttributeStore.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/storage/mem/MemAttributeStore.java b/src/main/java/org/apache/aurora/scheduler/storage/mem/MemAttributeStore.java
index 67684cf..2dde04e 100644
--- a/src/main/java/org/apache/aurora/scheduler/storage/mem/MemAttributeStore.java
+++ b/src/main/java/org/apache/aurora/scheduler/storage/mem/MemAttributeStore.java
@@ -17,11 +17,14 @@ import java.util.Map;
import java.util.Optional;
import java.util.Set;
+import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
import com.google.common.collect.FluentIterable;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Maps;
+import com.google.inject.Inject;
+import org.apache.aurora.common.stats.StatsProvider;
import org.apache.aurora.gen.Attribute;
import org.apache.aurora.gen.HostAttributes;
import org.apache.aurora.gen.MaintenanceMode;
@@ -32,8 +35,16 @@ import org.apache.aurora.scheduler.storage.entities.IHostAttributes;
* An in-memory attribute store.
*/
class MemAttributeStore implements AttributeStore.Mutable {
+ @VisibleForTesting
+ static final String ATTRIBUTE_STORE_SIZE = "mem_storage_attribute_size";
+
private final Map<String, IHostAttributes> hostAttributes = Maps.newConcurrentMap();
+ @Inject
+ MemAttributeStore(StatsProvider statsProvider) {
+ statsProvider.makeGauge(ATTRIBUTE_STORE_SIZE, hostAttributes::size);
+ }
+
@Override
public void deleteHostAttributes() {
hostAttributes.clear();
http://git-wip-us.apache.org/repos/asf/aurora/blob/3738c3e1/src/main/java/org/apache/aurora/scheduler/storage/mem/MemCronJobStore.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/storage/mem/MemCronJobStore.java b/src/main/java/org/apache/aurora/scheduler/storage/mem/MemCronJobStore.java
index a1e1f1e..0062c9d 100644
--- a/src/main/java/org/apache/aurora/scheduler/storage/mem/MemCronJobStore.java
+++ b/src/main/java/org/apache/aurora/scheduler/storage/mem/MemCronJobStore.java
@@ -34,13 +34,13 @@ import org.apache.aurora.scheduler.storage.entities.IJobKey;
*/
class MemCronJobStore implements CronJobStore.Mutable {
@VisibleForTesting
- static final String CRON_JOBS_SIZE = "mem_storage_cron_size";
+ static final String CRON_STORE_SIZE = "mem_storage_cron_size";
private final Map<IJobKey, IJobConfiguration> jobs = Maps.newConcurrentMap();
@Inject
MemCronJobStore(StatsProvider statsProvider) {
- statsProvider.makeGauge(CRON_JOBS_SIZE, () -> jobs.size());
+ statsProvider.makeGauge(CRON_STORE_SIZE, jobs::size);
}
@Timed("mem_storage_cron_save_accepted_job")
http://git-wip-us.apache.org/repos/asf/aurora/blob/3738c3e1/src/main/java/org/apache/aurora/scheduler/storage/mem/MemHostMaintenanceStore.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/storage/mem/MemHostMaintenanceStore.java b/src/main/java/org/apache/aurora/scheduler/storage/mem/MemHostMaintenanceStore.java
index c8d96f2..9afc892 100644
--- a/src/main/java/org/apache/aurora/scheduler/storage/mem/MemHostMaintenanceStore.java
+++ b/src/main/java/org/apache/aurora/scheduler/storage/mem/MemHostMaintenanceStore.java
@@ -17,17 +17,28 @@ import java.util.Map;
import java.util.Optional;
import java.util.Set;
+import javax.inject.Inject;
+
+import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Maps;
+import org.apache.aurora.common.stats.StatsProvider;
import org.apache.aurora.scheduler.storage.HostMaintenanceStore;
import org.apache.aurora.scheduler.storage.entities.IHostMaintenanceRequest;
public class MemHostMaintenanceStore implements HostMaintenanceStore.Mutable {
+ @VisibleForTesting
+ static final String MAINTENANCE_STORE_SIZE = "mem_storage_maintenance_size";
private final Map<String, IHostMaintenanceRequest> hostMaintenanceRequests =
Maps.newConcurrentMap();
+ @Inject
+ MemHostMaintenanceStore(StatsProvider statsProvider) {
+ statsProvider.makeGauge(MAINTENANCE_STORE_SIZE, hostMaintenanceRequests::size);
+ }
+
@Override
public Optional<IHostMaintenanceRequest> getHostMaintenanceRequest(String host) {
return Optional.ofNullable(hostMaintenanceRequests.get(host));
http://git-wip-us.apache.org/repos/asf/aurora/blob/3738c3e1/src/main/java/org/apache/aurora/scheduler/storage/mem/MemJobUpdateStore.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/storage/mem/MemJobUpdateStore.java b/src/main/java/org/apache/aurora/scheduler/storage/mem/MemJobUpdateStore.java
index 9e86b9e..d6b42e8 100644
--- a/src/main/java/org/apache/aurora/scheduler/storage/mem/MemJobUpdateStore.java
+++ b/src/main/java/org/apache/aurora/scheduler/storage/mem/MemJobUpdateStore.java
@@ -22,15 +22,18 @@ import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.Stream;
+import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.common.collect.Maps;
import com.google.common.collect.Ordering;
import com.google.common.primitives.Longs;
+import com.google.inject.Inject;
import org.apache.aurora.common.base.MorePreconditions;
import org.apache.aurora.common.inject.TimedInterceptor.Timed;
+import org.apache.aurora.common.stats.StatsProvider;
import org.apache.aurora.gen.JobInstanceUpdateEvent;
import org.apache.aurora.gen.JobUpdateDetails;
import org.apache.aurora.gen.JobUpdateEvent;
@@ -48,6 +51,8 @@ import org.apache.aurora.scheduler.storage.entities.IJobUpdateQuery;
import static java.util.Objects.requireNonNull;
public class MemJobUpdateStore implements JobUpdateStore.Mutable {
+ @VisibleForTesting
+ static final String UPDATE_STORE_SIZE = "mem_storage_update_size";
private static final Ordering<IJobUpdateDetails> REVERSE_LAST_MODIFIED_ORDER = Ordering.natural()
.reverse()
@@ -55,6 +60,11 @@ public class MemJobUpdateStore implements JobUpdateStore.Mutable {
private final Map<IJobUpdateKey, IJobUpdateDetails> updates = Maps.newConcurrentMap();
+ @Inject
+ MemJobUpdateStore(StatsProvider statsProvider) {
+ statsProvider.makeGauge(UPDATE_STORE_SIZE, updates::size);
+ }
+
@Timed("job_update_store_fetch_details_query")
@Override
public synchronized List<IJobUpdateDetails> fetchJobUpdates(IJobUpdateQuery query) {
http://git-wip-us.apache.org/repos/asf/aurora/blob/3738c3e1/src/main/java/org/apache/aurora/scheduler/storage/mem/MemQuotaStore.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/storage/mem/MemQuotaStore.java b/src/main/java/org/apache/aurora/scheduler/storage/mem/MemQuotaStore.java
index afb29fc..b8f79e9 100644
--- a/src/main/java/org/apache/aurora/scheduler/storage/mem/MemQuotaStore.java
+++ b/src/main/java/org/apache/aurora/scheduler/storage/mem/MemQuotaStore.java
@@ -16,9 +16,12 @@ package org.apache.aurora.scheduler.storage.mem;
import java.util.Map;
import java.util.Optional;
+import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Maps;
+import com.google.inject.Inject;
+import org.apache.aurora.common.stats.StatsProvider;
import org.apache.aurora.scheduler.storage.QuotaStore;
import org.apache.aurora.scheduler.storage.entities.IResourceAggregate;
@@ -26,9 +29,16 @@ import org.apache.aurora.scheduler.storage.entities.IResourceAggregate;
* An in-memory quota store.
*/
class MemQuotaStore implements QuotaStore.Mutable {
+ @VisibleForTesting
+ static final String QUOTA_STORE_SIZE = "mem_storage_quota_size";
private final Map<String, IResourceAggregate> quotas = Maps.newConcurrentMap();
+ @Inject
+ MemQuotaStore(StatsProvider statsProvider) {
+ statsProvider.makeGauge(QUOTA_STORE_SIZE, quotas::size);
+ }
+
@Override
public void deleteQuotas() {
quotas.clear();
http://git-wip-us.apache.org/repos/asf/aurora/blob/3738c3e1/src/test/java/org/apache/aurora/scheduler/storage/AbstractAttributeStoreTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/aurora/scheduler/storage/AbstractAttributeStoreTest.java b/src/test/java/org/apache/aurora/scheduler/storage/AbstractAttributeStoreTest.java
index 687fd96..952d58b 100644
--- a/src/test/java/org/apache/aurora/scheduler/storage/AbstractAttributeStoreTest.java
+++ b/src/test/java/org/apache/aurora/scheduler/storage/AbstractAttributeStoreTest.java
@@ -13,11 +13,13 @@
*/
package org.apache.aurora.scheduler.storage;
-import java.io.IOException;
import java.util.Optional;
import java.util.Set;
import com.google.common.collect.ImmutableSet;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.Module;
import org.apache.aurora.gen.Attribute;
import org.apache.aurora.gen.HostAttributes;
@@ -45,25 +47,28 @@ public abstract class AbstractAttributeStoreTest {
private static final Attribute ATTR1 = new Attribute("attr1", ImmutableSet.of("a", "b", "c"));
private static final Attribute ATTR2 = new Attribute("attr2", ImmutableSet.of("d", "e", "f"));
private static final Attribute ATTR3 = new Attribute("attr3", ImmutableSet.of("a", "d", "g"));
- private static final IHostAttributes HOST_A_ATTRS =
+ protected static final IHostAttributes HOST_A_ATTRS =
IHostAttributes.build(new HostAttributes(HOST_A, ImmutableSet.of(ATTR1, ATTR2))
.setSlaveId(SLAVE_A)
.setAttributes(ImmutableSet.of())
.setMode(MaintenanceMode.NONE));
- private static final IHostAttributes HOST_B_ATTRS =
+ protected static final IHostAttributes HOST_B_ATTRS =
IHostAttributes.build(new HostAttributes(HOST_B, ImmutableSet.of(ATTR2, ATTR3))
.setSlaveId(SLAVE_B)
.setAttributes(ImmutableSet.of())
.setMode(MaintenanceMode.DRAINING));
+ protected Injector injector;
private Storage storage;
@Before
- public void setUp() throws IOException {
- storage = createStorage();
+ public void setUp() {
+ injector = Guice.createInjector(getStorageModule());
+ storage = injector.getInstance(Storage.class);
+ storage.prepare();
}
- protected abstract Storage createStorage();
+ protected abstract Module getStorageModule();
@Test
public void testSaveAttributes() {
@@ -170,7 +175,7 @@ public abstract class AbstractAttributeStoreTest {
assertEquals(Optional.of(hostAUpdated), read(HOST_A));
}
- private boolean insert(IHostAttributes attributes) {
+ protected boolean insert(IHostAttributes attributes) {
return storage.write(
storeProvider -> storeProvider.getAttributeStore().saveHostAttributes(attributes));
}
@@ -183,7 +188,7 @@ public abstract class AbstractAttributeStoreTest {
return storage.read(storeProvider -> storeProvider.getAttributeStore().getHostAttributes());
}
- private void truncate() {
+ protected void truncate() {
storage.write(
(NoResult.Quiet) storeProvider -> storeProvider.getAttributeStore().deleteHostAttributes());
}
http://git-wip-us.apache.org/repos/asf/aurora/blob/3738c3e1/src/test/java/org/apache/aurora/scheduler/storage/AbstractCronJobStoreTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/aurora/scheduler/storage/AbstractCronJobStoreTest.java b/src/test/java/org/apache/aurora/scheduler/storage/AbstractCronJobStoreTest.java
index 889cb01..ccfd428 100644
--- a/src/test/java/org/apache/aurora/scheduler/storage/AbstractCronJobStoreTest.java
+++ b/src/test/java/org/apache/aurora/scheduler/storage/AbstractCronJobStoreTest.java
@@ -53,7 +53,7 @@ public abstract class AbstractCronJobStoreTest {
protected abstract Module getStorageModule();
@Before
- public void baseSetUp() {
+ public void setUp() {
injector = Guice.createInjector(getStorageModule());
storage = injector.getInstance(Storage.class);
storage.prepare();
http://git-wip-us.apache.org/repos/asf/aurora/blob/3738c3e1/src/test/java/org/apache/aurora/scheduler/storage/AbstractHostMaintenanceStoreTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/aurora/scheduler/storage/AbstractHostMaintenanceStoreTest.java b/src/test/java/org/apache/aurora/scheduler/storage/AbstractHostMaintenanceStoreTest.java
index e95955c..17f4385 100644
--- a/src/test/java/org/apache/aurora/scheduler/storage/AbstractHostMaintenanceStoreTest.java
+++ b/src/test/java/org/apache/aurora/scheduler/storage/AbstractHostMaintenanceStoreTest.java
@@ -18,6 +18,9 @@ import java.util.Optional;
import java.util.Set;
import com.google.common.collect.ImmutableSet;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.Module;
import org.apache.aurora.gen.CountSlaPolicy;
import org.apache.aurora.gen.HostMaintenanceRequest;
@@ -31,8 +34,8 @@ import static org.junit.Assert.assertEquals;
public abstract class AbstractHostMaintenanceStoreTest {
- private static final String HOST_A = "hostA";
- private static final String HOST_B = "hostB";
+ protected static final String HOST_A = "hostA";
+ protected static final String HOST_B = "hostB";
private static final SlaPolicy PERCENTAGE_SLA_POLICY = SlaPolicy.percentageSlaPolicy(
new PercentageSlaPolicy()
@@ -46,7 +49,7 @@ public abstract class AbstractHostMaintenanceStoreTest {
.setDurationSecs(1800)
);
- private static final IHostMaintenanceRequest HOST_A_MAINTENANCE_REQUEST =
+ protected static final IHostMaintenanceRequest HOST_A_MAINTENANCE_REQUEST =
IHostMaintenanceRequest.build(new HostMaintenanceRequest()
.setHost(HOST_A)
.setDefaultSlaPolicy(PERCENTAGE_SLA_POLICY)
@@ -54,7 +57,7 @@ public abstract class AbstractHostMaintenanceStoreTest {
.setTimeoutSecs(1800)
);
- private static final IHostMaintenanceRequest HOST_B_MAINTENANCE_REQUEST =
+ protected static final IHostMaintenanceRequest HOST_B_MAINTENANCE_REQUEST =
IHostMaintenanceRequest.build(new HostMaintenanceRequest()
.setHost(HOST_B)
.setDefaultSlaPolicy(COUNT_SLA_POLICY)
@@ -62,14 +65,17 @@ public abstract class AbstractHostMaintenanceStoreTest {
.setTimeoutSecs(1800)
);
+ protected Injector injector;
private Storage storage;
@Before
public void setUp() {
- storage = createStorage();
+ injector = Guice.createInjector(getStorageModule());
+ storage = injector.getInstance(Storage.class);
+ storage.prepare();
}
- protected abstract Storage createStorage();
+ protected abstract Module getStorageModule();
@Test
public void testReadHostMaintenanceRequestNonExistant() {
@@ -135,7 +141,7 @@ public abstract class AbstractHostMaintenanceStoreTest {
assertEquals(Optional.empty(), read(HOST_A));
}
- private void insert(IHostMaintenanceRequest hostMaintenanceRequest) {
+ protected void insert(IHostMaintenanceRequest hostMaintenanceRequest) {
storage.write(
store -> {
store.getHostMaintenanceStore().saveHostMaintenanceRequest(hostMaintenanceRequest);
@@ -151,7 +157,7 @@ public abstract class AbstractHostMaintenanceStoreTest {
return storage.read(store -> store.getHostMaintenanceStore().getHostMaintenanceRequests());
}
- private void truncate(String host) {
+ protected void truncate(String host) {
storage.write(
(Storage.MutateWork.NoResult.Quiet) store -> store
.getHostMaintenanceStore()
http://git-wip-us.apache.org/repos/asf/aurora/blob/3738c3e1/src/test/java/org/apache/aurora/scheduler/storage/AbstractJobUpdateStoreTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/aurora/scheduler/storage/AbstractJobUpdateStoreTest.java b/src/test/java/org/apache/aurora/scheduler/storage/AbstractJobUpdateStoreTest.java
index 6af66aa..3a93650 100644
--- a/src/test/java/org/apache/aurora/scheduler/storage/AbstractJobUpdateStoreTest.java
+++ b/src/test/java/org/apache/aurora/scheduler/storage/AbstractJobUpdateStoreTest.java
@@ -11,7 +11,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.aurora.scheduler.storage;
import java.util.List;
@@ -22,7 +21,9 @@ import java.util.stream.Stream;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
+import com.google.inject.Guice;
import com.google.inject.Injector;
+import com.google.inject.Module;
import org.apache.aurora.gen.InstanceTaskConfig;
import org.apache.aurora.gen.JobInstanceUpdateEvent;
@@ -80,16 +81,18 @@ public abstract class AbstractJobUpdateStoreTest {
private static final ImmutableSet<Metadata> METADATA =
ImmutableSet.of(new Metadata("k1", "v1"), new Metadata("k2", "v2"), new Metadata("k3", "v3"));
- private Storage storage;
+ protected Injector injector;
+ protected Storage storage;
+
+ protected abstract Module getStorageModule();
@Before
- public void setUp() throws Exception {
- Injector injector = createStorageInjector();
+ public void setUp() {
+ injector = Guice.createInjector(getStorageModule());
storage = injector.getInstance(Storage.class);
+ storage.prepare();
}
- protected abstract Injector createStorageInjector();
-
@After
public void tearDown() throws Exception {
truncateUpdates();
@@ -486,7 +489,7 @@ public abstract class AbstractJobUpdateStoreTest {
return makeKey(JOB, id);
}
- private static IJobUpdateKey makeKey(IJobKey job, String id) {
+ protected static IJobUpdateKey makeKey(IJobKey job, String id) {
return IJobUpdateKey.build(new JobUpdateKey(job.newBuilder(), id));
}
@@ -515,7 +518,7 @@ public abstract class AbstractJobUpdateStoreTest {
storeProvider.getJobUpdateStore().fetchJobUpdates(IJobUpdateQuery.build(query)));
}
- private void saveUpdate(IJobUpdateDetails update) {
+ protected void saveUpdate(IJobUpdateDetails update) {
storage.write((NoResult.Quiet) storeProvider -> {
JobUpdateStore.Mutable store = storeProvider.getJobUpdateStore();
store.saveJobUpdate(update.getUpdate());
@@ -539,7 +542,7 @@ public abstract class AbstractJobUpdateStoreTest {
storeProvider -> storeProvider.getJobUpdateStore().saveJobInstanceUpdateEvent(key, event));
}
- private void truncateUpdates() {
+ protected void truncateUpdates() {
storage.write((NoResult.Quiet)
storeProvider -> storeProvider.getJobUpdateStore().deleteAllUpdates());
}
@@ -603,7 +606,7 @@ public abstract class AbstractJobUpdateStoreTest {
.setMetadata(METADATA));
}
- private static IJobUpdateDetails makeJobUpdate(IJobUpdateKey key) {
+ protected static IJobUpdateDetails makeJobUpdate(IJobUpdateKey key) {
return IJobUpdateDetails.build(new JobUpdateDetails()
.setUpdateEvents(ImmutableList.of(FIRST_EVENT.newBuilder()))
.setUpdate(new JobUpdate()
http://git-wip-us.apache.org/repos/asf/aurora/blob/3738c3e1/src/test/java/org/apache/aurora/scheduler/storage/AbstractQuotaStoreTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/aurora/scheduler/storage/AbstractQuotaStoreTest.java b/src/test/java/org/apache/aurora/scheduler/storage/AbstractQuotaStoreTest.java
index e1d7da5..8328247 100644
--- a/src/test/java/org/apache/aurora/scheduler/storage/AbstractQuotaStoreTest.java
+++ b/src/test/java/org/apache/aurora/scheduler/storage/AbstractQuotaStoreTest.java
@@ -13,11 +13,13 @@
*/
package org.apache.aurora.scheduler.storage;
-import java.io.IOException;
import java.util.Map;
import java.util.Optional;
import com.google.common.collect.ImmutableMap;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.Module;
import org.apache.aurora.scheduler.resources.ResourceTestUtil;
import org.apache.aurora.scheduler.storage.Storage.MutateWork.NoResult;
@@ -30,19 +32,22 @@ import static org.junit.Assert.assertEquals;
public abstract class AbstractQuotaStoreTest {
- private static final String ROLE_A = "roleA";
- private static final String ROLE_B = "roleB";
- private static final IResourceAggregate QUOTA_A = ResourceTestUtil.aggregate(1.0, 2, 3);
- private static final IResourceAggregate QUOTA_B = ResourceTestUtil.aggregate(2.0, 4, 6);
+ protected static final String ROLE_A = "roleA";
+ protected static final String ROLE_B = "roleB";
+ protected static final IResourceAggregate QUOTA_A = ResourceTestUtil.aggregate(1.0, 2, 3);
+ protected static final IResourceAggregate QUOTA_B = ResourceTestUtil.aggregate(2.0, 4, 6);
+ protected Injector injector;
private Storage storage;
@Before
- public void setUp() throws IOException {
- storage = createStorage();
+ public void setUp() {
+ injector = Guice.createInjector(getStorageModule());
+ storage = injector.getInstance(Storage.class);
+ storage.prepare();
}
- protected abstract Storage createStorage();
+ protected abstract Module getStorageModule();
@Test
public void testCrud() {
@@ -84,7 +89,7 @@ public abstract class AbstractQuotaStoreTest {
assertQuotas(ImmutableMap.of(ROLE_A, QUOTA_B));
}
- private void save(String role, IResourceAggregate quota) {
+ protected void save(String role, IResourceAggregate quota) {
storage.write(
(NoResult.Quiet) storeProvider -> storeProvider.getQuotaStore().saveQuota(role, quota));
}
@@ -100,12 +105,12 @@ public abstract class AbstractQuotaStoreTest {
);
}
- private void delete(String role) {
+ protected void delete(String role) {
storage.write(
(NoResult.Quiet) storeProvider -> storeProvider.getQuotaStore().removeQuota(role));
}
- private void deleteAll() {
+ protected void deleteAll() {
storage.write((NoResult.Quiet) storeProvider -> storeProvider.getQuotaStore().deleteQuotas());
}
}
http://git-wip-us.apache.org/repos/asf/aurora/blob/3738c3e1/src/test/java/org/apache/aurora/scheduler/storage/AbstractSchedulerStoreTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/aurora/scheduler/storage/AbstractSchedulerStoreTest.java b/src/test/java/org/apache/aurora/scheduler/storage/AbstractSchedulerStoreTest.java
index cb80519..74d2448 100644
--- a/src/test/java/org/apache/aurora/scheduler/storage/AbstractSchedulerStoreTest.java
+++ b/src/test/java/org/apache/aurora/scheduler/storage/AbstractSchedulerStoreTest.java
@@ -13,9 +13,12 @@
*/
package org.apache.aurora.scheduler.storage;
-import java.io.IOException;
import java.util.Optional;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.Module;
+
import org.apache.aurora.scheduler.storage.Storage.MutateWork.NoResult;
import org.junit.Before;
import org.junit.Test;
@@ -24,14 +27,17 @@ import static org.junit.Assert.assertEquals;
public abstract class AbstractSchedulerStoreTest {
+ protected Injector injector;
private Storage storage;
@Before
- public void setUp() throws IOException {
- storage = createStorage();
+ public void setUp() {
+ injector = Guice.createInjector(getStorageModule());
+ storage = injector.getInstance(Storage.class);
+ storage.prepare();
}
- protected abstract Storage createStorage();
+ protected abstract Module getStorageModule();
@Test
public void testSchedulerStore() {
http://git-wip-us.apache.org/repos/asf/aurora/blob/3738c3e1/src/test/java/org/apache/aurora/scheduler/storage/AbstractTaskStoreTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/aurora/scheduler/storage/AbstractTaskStoreTest.java b/src/test/java/org/apache/aurora/scheduler/storage/AbstractTaskStoreTest.java
index c53e584..bb714ee 100644
--- a/src/test/java/org/apache/aurora/scheduler/storage/AbstractTaskStoreTest.java
+++ b/src/test/java/org/apache/aurora/scheduler/storage/AbstractTaskStoreTest.java
@@ -100,7 +100,7 @@ public abstract class AbstractTaskStoreTest extends TearDownTestCase {
protected abstract Module getStorageModule();
@Before
- public void baseSetUp() {
+ public void setUp() {
injector = Guice.createInjector(getStorageModule());
storage = injector.getInstance(Storage.class);
storage.prepare();
http://git-wip-us.apache.org/repos/asf/aurora/blob/3738c3e1/src/test/java/org/apache/aurora/scheduler/storage/mem/MemAttributeStoreTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/aurora/scheduler/storage/mem/MemAttributeStoreTest.java b/src/test/java/org/apache/aurora/scheduler/storage/mem/MemAttributeStoreTest.java
index 64b19a9..795950e 100644
--- a/src/test/java/org/apache/aurora/scheduler/storage/mem/MemAttributeStoreTest.java
+++ b/src/test/java/org/apache/aurora/scheduler/storage/mem/MemAttributeStoreTest.java
@@ -13,12 +13,43 @@
*/
package org.apache.aurora.scheduler.storage.mem;
+import com.google.inject.AbstractModule;
+import com.google.inject.Module;
+import com.google.inject.util.Modules;
+
+import org.apache.aurora.common.stats.StatsProvider;
import org.apache.aurora.scheduler.storage.AbstractAttributeStoreTest;
-import org.apache.aurora.scheduler.storage.Storage;
+import org.apache.aurora.scheduler.testing.FakeStatsProvider;
+import org.junit.Test;
+
+import static org.apache.aurora.scheduler.storage.mem.MemAttributeStore.ATTRIBUTE_STORE_SIZE;
+import static org.junit.Assert.assertEquals;
public class MemAttributeStoreTest extends AbstractAttributeStoreTest {
+
+ private FakeStatsProvider statsProvider;
+
@Override
- protected Storage createStorage() {
- return MemStorageModule.newEmptyStorage();
+ protected Module getStorageModule() {
+ statsProvider = new FakeStatsProvider();
+ return Modules.combine(
+ new MemStorageModule(),
+ new AbstractModule() {
+ @Override
+ protected void configure() {
+ bind(StatsProvider.class).toInstance(statsProvider);
+ }
+ });
+ }
+
+ @Test
+ public void testStoreSize() {
+ assertEquals(0L, statsProvider.getLongValue(ATTRIBUTE_STORE_SIZE));
+ insert(HOST_A_ATTRS);
+ assertEquals(1L, statsProvider.getLongValue(ATTRIBUTE_STORE_SIZE));
+ insert(HOST_B_ATTRS);
+ assertEquals(2L, statsProvider.getLongValue(ATTRIBUTE_STORE_SIZE));
+ truncate();
+ assertEquals(0L, statsProvider.getLongValue(ATTRIBUTE_STORE_SIZE));
}
}
http://git-wip-us.apache.org/repos/asf/aurora/blob/3738c3e1/src/test/java/org/apache/aurora/scheduler/storage/mem/MemCronJobStoreTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/aurora/scheduler/storage/mem/MemCronJobStoreTest.java b/src/test/java/org/apache/aurora/scheduler/storage/mem/MemCronJobStoreTest.java
index 15e0e30..c56c706 100644
--- a/src/test/java/org/apache/aurora/scheduler/storage/mem/MemCronJobStoreTest.java
+++ b/src/test/java/org/apache/aurora/scheduler/storage/mem/MemCronJobStoreTest.java
@@ -22,7 +22,7 @@ import org.apache.aurora.scheduler.storage.AbstractCronJobStoreTest;
import org.apache.aurora.scheduler.testing.FakeStatsProvider;
import org.junit.Test;
-import static org.apache.aurora.scheduler.storage.mem.MemCronJobStore.CRON_JOBS_SIZE;
+import static org.apache.aurora.scheduler.storage.mem.MemCronJobStore.CRON_STORE_SIZE;
import static org.junit.Assert.assertEquals;
public class MemCronJobStoreTest extends AbstractCronJobStoreTest {
@@ -44,12 +44,12 @@ public class MemCronJobStoreTest extends AbstractCronJobStoreTest {
@Test
public void testStoreSize() {
- assertEquals(0L, statsProvider.getLongValue(CRON_JOBS_SIZE));
+ assertEquals(0L, statsProvider.getLongValue(CRON_STORE_SIZE));
saveAcceptedJob(JOB_A);
- assertEquals(1L, statsProvider.getLongValue(CRON_JOBS_SIZE));
+ assertEquals(1L, statsProvider.getLongValue(CRON_STORE_SIZE));
saveAcceptedJob(JOB_B);
- assertEquals(2L, statsProvider.getLongValue(CRON_JOBS_SIZE));
+ assertEquals(2L, statsProvider.getLongValue(CRON_STORE_SIZE));
deleteJobs();
- assertEquals(0L, statsProvider.getLongValue(CRON_JOBS_SIZE));
+ assertEquals(0L, statsProvider.getLongValue(CRON_STORE_SIZE));
}
}
http://git-wip-us.apache.org/repos/asf/aurora/blob/3738c3e1/src/test/java/org/apache/aurora/scheduler/storage/mem/MemHostMaintenanceStoreTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/aurora/scheduler/storage/mem/MemHostMaintenanceStoreTest.java b/src/test/java/org/apache/aurora/scheduler/storage/mem/MemHostMaintenanceStoreTest.java
index ce1a9d6..f259657 100644
--- a/src/test/java/org/apache/aurora/scheduler/storage/mem/MemHostMaintenanceStoreTest.java
+++ b/src/test/java/org/apache/aurora/scheduler/storage/mem/MemHostMaintenanceStoreTest.java
@@ -13,13 +13,46 @@
*/
package org.apache.aurora.scheduler.storage.mem;
+import com.google.inject.AbstractModule;
+import com.google.inject.Module;
+import com.google.inject.util.Modules;
+
+import org.apache.aurora.common.stats.StatsProvider;
import org.apache.aurora.scheduler.storage.AbstractHostMaintenanceStoreTest;
-import org.apache.aurora.scheduler.storage.Storage;
+import org.apache.aurora.scheduler.testing.FakeStatsProvider;
+import org.junit.Test;
+
+import static org.apache.aurora.scheduler.storage.mem.MemHostMaintenanceStore.MAINTENANCE_STORE_SIZE;
+import static org.junit.Assert.assertEquals;
public class MemHostMaintenanceStoreTest extends AbstractHostMaintenanceStoreTest {
+
+ private FakeStatsProvider statsProvider;
+
@Override
- protected Storage createStorage() {
- return MemStorageModule.newEmptyStorage();
+ protected Module getStorageModule() {
+ statsProvider = new FakeStatsProvider();
+ return Modules.combine(
+ new MemStorageModule(),
+ new AbstractModule() {
+ @Override
+ protected void configure() {
+ bind(StatsProvider.class).toInstance(statsProvider);
+ }
+ });
+ }
+
+ @Test
+ public void testStoreSize() {
+ assertEquals(0L, statsProvider.getLongValue(MAINTENANCE_STORE_SIZE));
+ insert(HOST_A_MAINTENANCE_REQUEST);
+ assertEquals(1L, statsProvider.getLongValue(MAINTENANCE_STORE_SIZE));
+ insert(HOST_B_MAINTENANCE_REQUEST);
+ assertEquals(2L, statsProvider.getLongValue(MAINTENANCE_STORE_SIZE));
+ truncate(HOST_A);
+ assertEquals(1L, statsProvider.getLongValue(MAINTENANCE_STORE_SIZE));
+ truncate(HOST_B);
+ assertEquals(0L, statsProvider.getLongValue(MAINTENANCE_STORE_SIZE));
}
}
http://git-wip-us.apache.org/repos/asf/aurora/blob/3738c3e1/src/test/java/org/apache/aurora/scheduler/storage/mem/MemJobUpdateStoreTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/aurora/scheduler/storage/mem/MemJobUpdateStoreTest.java b/src/test/java/org/apache/aurora/scheduler/storage/mem/MemJobUpdateStoreTest.java
index cbf1bc4..bddd557 100644
--- a/src/test/java/org/apache/aurora/scheduler/storage/mem/MemJobUpdateStoreTest.java
+++ b/src/test/java/org/apache/aurora/scheduler/storage/mem/MemJobUpdateStoreTest.java
@@ -14,25 +14,51 @@
package org.apache.aurora.scheduler.storage.mem;
import com.google.inject.AbstractModule;
-import com.google.inject.Guice;
-import com.google.inject.Injector;
+import com.google.inject.Module;
+import com.google.inject.util.Modules;
import org.apache.aurora.common.stats.StatsProvider;
+import org.apache.aurora.scheduler.base.JobKeys;
import org.apache.aurora.scheduler.storage.AbstractJobUpdateStoreTest;
+import org.apache.aurora.scheduler.storage.entities.IJobUpdateDetails;
+import org.apache.aurora.scheduler.storage.entities.IJobUpdateKey;
import org.apache.aurora.scheduler.testing.FakeStatsProvider;
+import org.junit.Test;
+
+import static org.apache.aurora.scheduler.storage.mem.MemJobUpdateStore.UPDATE_STORE_SIZE;
+import static org.junit.Assert.assertEquals;
public class MemJobUpdateStoreTest extends AbstractJobUpdateStoreTest {
+
+ private FakeStatsProvider statsProvider;
+
@Override
- protected Injector createStorageInjector() {
- return Guice.createInjector(
+ protected Module getStorageModule() {
+ statsProvider = new FakeStatsProvider();
+ return Modules.combine(
new MemStorageModule(),
new AbstractModule() {
@Override
protected void configure() {
- FakeStatsProvider stats = new FakeStatsProvider();
- bind(StatsProvider.class).toInstance(stats);
- bind(FakeStatsProvider.class).toInstance(stats);
+ bind(StatsProvider.class).toInstance(statsProvider);
}
});
}
+
+ @Test
+ public void testStoreSize() {
+ IJobUpdateKey updateId1 = makeKey(JobKeys.from("role", "env", "name1"), "u1");
+ IJobUpdateKey updateId2 = makeKey(JobKeys.from("role", "env", "name2"), "u2");
+
+ IJobUpdateDetails update1 = makeJobUpdate(updateId1);
+ IJobUpdateDetails update2 = makeJobUpdate(updateId2);
+
+ assertEquals(0L, statsProvider.getLongValue(UPDATE_STORE_SIZE));
+ saveUpdate(update1);
+ assertEquals(1L, statsProvider.getLongValue(UPDATE_STORE_SIZE));
+ saveUpdate(update2);
+ assertEquals(2L, statsProvider.getLongValue(UPDATE_STORE_SIZE));
+ truncateUpdates();
+ assertEquals(0L, statsProvider.getLongValue(UPDATE_STORE_SIZE));
+ }
}
http://git-wip-us.apache.org/repos/asf/aurora/blob/3738c3e1/src/test/java/org/apache/aurora/scheduler/storage/mem/MemQuotaStoreTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/aurora/scheduler/storage/mem/MemQuotaStoreTest.java b/src/test/java/org/apache/aurora/scheduler/storage/mem/MemQuotaStoreTest.java
index e8324ee..7ff2ceb 100644
--- a/src/test/java/org/apache/aurora/scheduler/storage/mem/MemQuotaStoreTest.java
+++ b/src/test/java/org/apache/aurora/scheduler/storage/mem/MemQuotaStoreTest.java
@@ -13,12 +13,45 @@
*/
package org.apache.aurora.scheduler.storage.mem;
+import com.google.inject.AbstractModule;
+import com.google.inject.Module;
+import com.google.inject.util.Modules;
+
+import org.apache.aurora.common.stats.StatsProvider;
import org.apache.aurora.scheduler.storage.AbstractQuotaStoreTest;
-import org.apache.aurora.scheduler.storage.Storage;
+import org.apache.aurora.scheduler.testing.FakeStatsProvider;
+import org.junit.Test;
+
+import static org.apache.aurora.scheduler.storage.mem.MemQuotaStore.QUOTA_STORE_SIZE;
+import static org.junit.Assert.assertEquals;
public class MemQuotaStoreTest extends AbstractQuotaStoreTest {
+
+ private FakeStatsProvider statsProvider;
+
@Override
- protected Storage createStorage() {
- return MemStorageModule.newEmptyStorage();
+ protected Module getStorageModule() {
+ statsProvider = new FakeStatsProvider();
+ return Modules.combine(
+ new MemStorageModule(),
+ new AbstractModule() {
+ @Override
+ protected void configure() {
+ bind(StatsProvider.class).toInstance(statsProvider);
+ }
+ });
+ }
+
+ @Test
+ public void testStoreSize() {
+ assertEquals(0L, statsProvider.getLongValue(QUOTA_STORE_SIZE));
+ save(ROLE_A, QUOTA_A);
+ assertEquals(1L, statsProvider.getLongValue(QUOTA_STORE_SIZE));
+ save(ROLE_B, QUOTA_B);
+ assertEquals(2L, statsProvider.getLongValue(QUOTA_STORE_SIZE));
+ delete(ROLE_A);
+ assertEquals(1L, statsProvider.getLongValue(QUOTA_STORE_SIZE));
+ deleteAll();
+ assertEquals(0L, statsProvider.getLongValue(QUOTA_STORE_SIZE));
}
}
http://git-wip-us.apache.org/repos/asf/aurora/blob/3738c3e1/src/test/java/org/apache/aurora/scheduler/storage/mem/MemSchedulerStoreTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/aurora/scheduler/storage/mem/MemSchedulerStoreTest.java b/src/test/java/org/apache/aurora/scheduler/storage/mem/MemSchedulerStoreTest.java
new file mode 100644
index 0000000..d9a2fdb
--- /dev/null
+++ b/src/test/java/org/apache/aurora/scheduler/storage/mem/MemSchedulerStoreTest.java
@@ -0,0 +1,40 @@
+/**
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.aurora.scheduler.storage.mem;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.Module;
+import com.google.inject.util.Modules;
+
+import org.apache.aurora.common.stats.StatsProvider;
+import org.apache.aurora.scheduler.storage.AbstractSchedulerStoreTest;
+import org.apache.aurora.scheduler.testing.FakeStatsProvider;
+
+public class MemSchedulerStoreTest extends AbstractSchedulerStoreTest {
+
+ private FakeStatsProvider statsProvider;
+
+ @Override
+ protected Module getStorageModule() {
+ statsProvider = new FakeStatsProvider();
+ return Modules.combine(
+ new MemStorageModule(),
+ new AbstractModule() {
+ @Override
+ protected void configure() {
+ bind(StatsProvider.class).toInstance(statsProvider);
+ }
+ });
+ }
+}