Skip to content

Commit 4c2da9e

Browse files
committed
Added better toString for actor plans to help in debugging. Fixed error in precondition tests for the partitions data manager. Added some debug support for the simulattion's planning queue.
1 parent 6171611 commit 4c2da9e

4 files changed

Lines changed: 37 additions & 5 deletions

File tree

simulation/src/main/java/gov/hhs/aspr/ms/gcm/simulation/nucleus/ActorPlan.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,4 +42,25 @@ public ActorPlan(double time, boolean active) {
4242
* Executes the actor logic associated with the plan.
4343
*/
4444
protected abstract void execute(ActorContext context);
45+
46+
@Override
47+
public String toString() {
48+
StringBuilder builder = new StringBuilder();
49+
builder.append("ActorPlan [actorId=");
50+
builder.append(actorId);
51+
builder.append(", time=");
52+
builder.append(time);
53+
builder.append(", planner=");
54+
builder.append(planner);
55+
builder.append(", isActive=");
56+
builder.append(isActive);
57+
builder.append(", canceled=");
58+
builder.append(canceled);
59+
builder.append(", arrivalId=");
60+
builder.append(arrivalId);
61+
builder.append("]");
62+
return builder.toString();
63+
}
64+
65+
4566
}

simulation/src/main/java/gov/hhs/aspr/ms/gcm/simulation/nucleus/Simulation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -797,7 +797,7 @@ public void execute() {
797797
}
798798

799799
final Plan plan = planningQueue.poll();
800-
// System.out.println(plan);
800+
// System.out.println(plan+" at time "+time);
801801

802802
if (plan.isActive) {
803803
activePlanCount--;

simulation/src/main/java/gov/hhs/aspr/ms/gcm/simulation/plugins/partitions/datamanagers/PartitionsDataManager.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,9 +399,13 @@ public void init(DataManagerContext dataManagerContext) {
399399
dataManagerContext.subscribe(PersonAdditionEvent.class, this::handlePersonAdditionEvent);
400400

401401
dataManagerContext.subscribe(PersonRemovalEvent.class, this::handlePersonRemovalEvent);
402+
403+
dataManagerContext.subscribe(PartitionAdditionMutationEvent.class, this::handlePartitionAdditionMutationEvent);
404+
402405

403406
reservedEventClasses.add(PersonAdditionEvent.class);
404407
reservedEventClasses.add(PersonRemovalEvent.class);
408+
405409

406410
if (dataManagerContext.stateRecordingIsScheduled()) {
407411
dataManagerContext.subscribeToSimulationClose(this::recordSimulationState);
@@ -468,6 +472,8 @@ private void handlePersonRemovalEvent(final DataManagerContext dataManagerContex
468472
}
469473

470474
}
475+
private static record PartitionAdditionMutationEvent(Partition partition,Object key) implements Event {
476+
}
471477

472478
/**
473479
* Adds a population partition for the given key and component id. The key must
@@ -485,6 +491,13 @@ private void handlePersonRemovalEvent(final DataManagerContext dataManagerContex
485491
* </ul>
486492
*/
487493
public void addPartition(final Partition partition, final Object key) {
494+
dataManagerContext.releaseMutationEvent(
495+
new PartitionAdditionMutationEvent(partition, key));
496+
}
497+
private void handlePartitionAdditionMutationEvent(DataManagerContext dataManagerContext, PartitionAdditionMutationEvent partitionAdditionMutationEvent) {
498+
499+
Partition partition = partitionAdditionMutationEvent.partition;
500+
Object key = partitionAdditionMutationEvent.key;
488501

489502
validatePopulationPartitionNotNull(partition);
490503
validatePopulationPartitionKeyNotNull(key);

simulation/src/test/java/gov/hhs/aspr/ms/gcm/simulation/plugins/partitions/datamanagers/AT_PartitionsDataManager.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -339,8 +339,7 @@ public void testAddPartition() {
339339
// precondition: if the partition is null
340340
contractException = assertThrows(ContractException.class, () -> {
341341
Factory factory2 = PartitionsTestPluginFactory.factory(0, 7407325994321033161L, (c) -> {
342-
PartitionsPluginData partitionsPluginData = PartitionsPluginData.builder().build();
343-
PartitionsDataManager partitionsDataManager = new PartitionsDataManager(partitionsPluginData);
342+
PartitionsDataManager partitionsDataManager = c.getDataManager(PartitionsDataManager.class);
344343
Object key = new Object();
345344
partitionsDataManager.addPartition(null, key);
346345
});
@@ -351,8 +350,7 @@ public void testAddPartition() {
351350
// precondition: if the key is null
352351
contractException = assertThrows(ContractException.class, () -> {
353352
Factory factory2 = PartitionsTestPluginFactory.factory(0, 530075900162852558L, (c) -> {
354-
PartitionsPluginData partitionsPluginData = PartitionsPluginData.builder().build();
355-
PartitionsDataManager partitionsDataManager = new PartitionsDataManager(partitionsPluginData);
353+
PartitionsDataManager partitionsDataManager = c.getDataManager(PartitionsDataManager.class);
356354
partitionsDataManager.addPartition(Partition.builder().build(), null);
357355
});
358356
TestSimulation.builder().addPlugins(factory2.getPlugins()).build().execute();

0 commit comments

Comments
 (0)