diff --git a/server/eclipse-project/src/test/java/au/org/democracydevelopers/corla/workflows/Demo1.java b/server/eclipse-project/src/test/java/au/org/democracydevelopers/corla/workflows/Demo1.java index c3f17813..04d30a3e 100644 --- a/server/eclipse-project/src/test/java/au/org/democracydevelopers/corla/workflows/Demo1.java +++ b/server/eclipse-project/src/test/java/au/org/democracydevelopers/corla/workflows/Demo1.java @@ -29,7 +29,6 @@ import io.restassured.path.json.JsonPath; import org.apache.log4j.LogManager; import org.apache.log4j.Logger; -import org.testcontainers.containers.PostgreSQLContainer; import org.testcontainers.ext.ScriptUtils; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; @@ -41,26 +40,16 @@ /** * A demonstration workflow that uploads CVRs and ballot manifests for all 64 counties. * At the moment, this seems to run fine if run alone, but not to run in parallel with - * EstimateSamplesVaryingManifests, or in * github actions. Hence currently disabled. + * EstimateSamplesVaryingManifests. */ @Test(enabled=true) public class Demo1 extends Workflow { - /** - * Path for all the data files. - */ - private static final String dataPath = "src/test/resources/CSVs/"; - /** * Class-wide logger */ private static final Logger LOGGER = LogManager.getLogger(Demo1.class); - /** - * Container for the mock-up database. - */ - private final static PostgreSQLContainer postgres = createTestContainer(); - /** * Database init. */ @@ -149,15 +138,16 @@ public void runDemo1() throws InterruptedException { assertEquals(dashboard.get(ASM_STATE), PARTIAL_AUDIT_INFO_SET.toString()); // 4. Generate assertions; sanity check - // TODO this is commented out for now while we figure out how to run the raire-service in the Docker container. - // generateAssertions(1); - // dashboard = getDoSDashBoardRefreshResponse(); + generateAssertions("SQL/demo1-assertions.sql", 1); + dashboard = getDoSDashBoardRefreshResponse(); + // There should be 4 IRV contests. - // assertEquals(4, dashboard.getList("generate_assertions_summaries").size()); + assertEquals(4, dashboard.getList("generate_assertions_summaries").size()); // 5. Choose targeted contests for audit. - // For now, just target plurality contests. - targetContests(Map.of("City of Longmont - Mayor","COUNTY_WIDE_CONTEST")); + targetContests(Map.of("City of Longmont - Mayor","COUNTY_WIDE_CONTEST", + "Byron Mayoral", "STATE_WIDE_CONTEST", + "Kempsey Mayoral", "COUNTY_WIDE_CONTEST")); // 6. Set the seed. setSeed(defaultSeed); @@ -171,7 +161,7 @@ public void runDemo1() throws InterruptedException { Map sampleSizes = getSampleSizeEstimates(); assertFalse(sampleSizes.isEmpty()); - // TODO get assertions, sanity check, but first get the raire-service working (see above). + // TODO Sanity check of assertions and sample size estimates. LOGGER.debug("Successfully completed Demo1."); } diff --git a/server/eclipse-project/src/test/java/au/org/democracydevelopers/corla/workflows/Workflow.java b/server/eclipse-project/src/test/java/au/org/democracydevelopers/corla/workflows/Workflow.java index bff3e69a..957cfb3b 100644 --- a/server/eclipse-project/src/test/java/au/org/democracydevelopers/corla/workflows/Workflow.java +++ b/server/eclipse-project/src/test/java/au/org/democracydevelopers/corla/workflows/Workflow.java @@ -48,6 +48,9 @@ import org.apache.log4j.LogManager; import org.apache.log4j.Logger; import org.apache.http.HttpStatus; +import org.testcontainers.containers.PostgreSQLContainer; +import org.testcontainers.ext.ScriptUtils; +import org.testcontainers.jdbc.JdbcDatabaseDelegate; import org.testng.annotations.BeforeClass; import us.freeandfair.corla.model.UploadedFile; import wiremock.net.minidev.json.JSONArray; @@ -80,11 +83,21 @@ public class Workflow extends TestClassWithDatabase { */ private static final Logger LOGGER = LogManager.getLogger(Workflow.class); + /** + * Container for the mock-up database. + */ + protected final static PostgreSQLContainer postgres = createTestContainer(); + /** * Path for storing temporary config files */ private static final String tempConfigPath = "src/test/workflows/temp/"; + /** + * Path for all the data files. + */ + protected static final String dataPath = "src/test/resources/CSVs/"; + /** * Strings for colorado-rla JSON structures. */ @@ -366,23 +379,31 @@ protected boolean uploadSuccessfulWithin(int timeAllowedSeconds, final Set... - * wrong database. * Set it up so that we run raire-service inside the Docker container and tell main where to find it. */ - protected void generateAssertions(final double timeLimitSeconds) { + protected void generateAssertions(final String sqlPath, final double timeLimitSeconds) + { + final var containerDelegate = new JdbcDatabaseDelegate(postgres, ""); + ScriptUtils.runInitScript(containerDelegate, sqlPath); + + // Version that connects to raire-service below: // Login as state admin. - final SessionFilter filter = doLogin("stateadmin1"); - - given() - .filter(filter) - .header("Content-Type", "application/x-www-form-urlencoded") - .get("/generate-assertions?timeLimitSeconds="+timeLimitSeconds) - .then() - .assertThat() - .statusCode(HttpStatus.SC_OK); + //final SessionFilter filter = doLogin("stateadmin1"); + + //given() + // .filter(filter) + // .header("Content-Type", "application/x-www-form-urlencoded") + // .get("/generate-assertions?timeLimitSeconds="+timeLimitSeconds) + // .then() + // .assertThat() + // .statusCode(HttpStatus.SC_OK); } protected void startAuditRound() { diff --git a/server/eclipse-project/src/test/resources/SQL/demo1-assertions.sql b/server/eclipse-project/src/test/resources/SQL/demo1-assertions.sql new file mode 100644 index 00000000..73dbf563 --- /dev/null +++ b/server/eclipse-project/src/test/resources/SQL/demo1-assertions.sql @@ -0,0 +1,85 @@ +INSERT INTO public.assertion (assertion_type, id, contest_name, current_risk, difficulty, diluted_margin, estimated_samples_to_audit, loser, margin, one_vote_over_count, one_vote_under_count, optimistic_samples_to_audit, other_count, two_vote_over_count, two_vote_under_count, version, winner) VALUES ('NEB', 20, 'Kempsey Mayoral', 1.00, 5.899027172089903, 0.16951947682684107, 43, 'EVANS Andrew', 2981, 0, 0, 43, 0, 0, 0, 1, 'HAUVILLE Leo'); +INSERT INTO public.assertion (assertion_type, id, contest_name, current_risk, difficulty, diluted_margin, estimated_samples_to_audit, loser, margin, one_vote_over_count, one_vote_under_count, optimistic_samples_to_audit, other_count, two_vote_over_count, two_vote_under_count, version, winner) VALUES ('NEB', 21, 'Kempsey Mayoral', 1.00, 10.47973778307509, 0.09542223485925505, 77, 'BAIN Arthur', 1678, 0, 0, 77, 0, 0, 0, 1, 'HAUVILLE Leo'); +INSERT INTO public.assertion (assertion_type, id, contest_name, current_risk, difficulty, diluted_margin, estimated_samples_to_audit, loser, margin, one_vote_over_count, one_vote_under_count, optimistic_samples_to_audit, other_count, two_vote_over_count, two_vote_under_count, version, winner) VALUES ('NEB', 22, 'Kempsey Mayoral', 1.00, 6.5591197314434915, 0.15245948251350583, 48, 'SAUL Dean', 2681, 0, 0, 48, 0, 0, 0, 1, 'HAUVILLE Leo'); +INSERT INTO public.assertion (assertion_type, id, contest_name, current_risk, difficulty, diluted_margin, estimated_samples_to_audit, loser, margin, one_vote_over_count, one_vote_under_count, optimistic_samples_to_audit, other_count, two_vote_over_count, two_vote_under_count, version, winner) VALUES ('NEB', 23, 'Kempsey Mayoral', 1.00, 6.022260273972603, 0.1660506113164629, 44, 'IRWIN Troy', 2920, 0, 0, 44, 0, 0, 0, 1, 'HAUVILLE Leo'); +INSERT INTO public.assertion (assertion_type, id, contest_name, current_risk, difficulty, diluted_margin, estimated_samples_to_audit, loser, margin, one_vote_over_count, one_vote_under_count, optimistic_samples_to_audit, other_count, two_vote_over_count, two_vote_under_count, version, winner) VALUES ('NEB', 24, 'Kempsey Mayoral', 1.00, 5.379320893239523, 0.18589707136764289, 40, 'RAEBURN Bruce', 3269, 0, 0, 40, 0, 0, 0, 1, 'HAUVILLE Leo'); +INSERT INTO public.assertion (assertion_type, id, contest_name, current_risk, difficulty, diluted_margin, estimated_samples_to_audit, loser, margin, one_vote_over_count, one_vote_under_count, optimistic_samples_to_audit, other_count, two_vote_over_count, two_vote_under_count, version, winner) VALUES ('NEN', 25, 'Kempsey Mayoral', 1.00, 45.43927648578811, 0.022007392664202444, 332, 'CAMPBELL Liz', 387, 0, 0, 332, 0, 0, 0, 1, 'HAUVILLE Leo'); +INSERT INTO public.assertion (assertion_type, id, contest_name, current_risk, difficulty, diluted_margin, estimated_samples_to_audit, loser, margin, one_vote_over_count, one_vote_under_count, optimistic_samples_to_audit, other_count, two_vote_over_count, two_vote_under_count, version, winner) VALUES ('NEB', 26, 'City of Boulder Mayoral Candidates', 1.00, 46.40923196276183, 0.02154743695828423, 339, 'Nicole Speer', 2578, 0, 0, 339, 0, 0, 0, 13, 'Aaron Brockett'); +INSERT INTO public.assertion (assertion_type, id, contest_name, current_risk, difficulty, diluted_margin, estimated_samples_to_audit, loser, margin, one_vote_over_count, one_vote_under_count, optimistic_samples_to_audit, other_count, two_vote_over_count, two_vote_under_count, version, winner) VALUES ('NEB', 27, 'City of Boulder Mayoral Candidates', 1.00, 14.260190703218116, 0.07012528940263951, 104, 'Paul Tweedlie', 8390, 0, 0, 104, 0, 0, 0, 13, 'Aaron Brockett'); +INSERT INTO public.assertion (assertion_type, id, contest_name, current_risk, difficulty, diluted_margin, estimated_samples_to_audit, loser, margin, one_vote_over_count, one_vote_under_count, optimistic_samples_to_audit, other_count, two_vote_over_count, two_vote_under_count, version, winner) VALUES ('NEN', 6, 'Byron Mayoral', 1.00, 53.13143445435827, 0.01882124979815921, 2335, 'DEY Duncan', 2914, 12, 0, 1257, 1, 0, 0, 17, 'LYON Michael'); +INSERT INTO public.assertion (assertion_type, id, contest_name, current_risk, difficulty, diluted_margin, estimated_samples_to_audit, loser, margin, one_vote_over_count, one_vote_under_count, optimistic_samples_to_audit, other_count, two_vote_over_count, two_vote_under_count, version, winner) VALUES ('NEN', 7, 'Byron Mayoral', 1.00, 67.78677758318739, 0.014752139512352656, 2979, 'PUGH Asren', 2284, 12, 0, 1604, 1, 0, 0, 17, 'LYON Michael'); +INSERT INTO public.assertion (assertion_type, id, contest_name, current_risk, difficulty, diluted_margin, estimated_samples_to_audit, loser, margin, one_vote_over_count, one_vote_under_count, optimistic_samples_to_audit, other_count, two_vote_over_count, two_vote_under_count, version, winner) VALUES ('NEN', 8, 'Byron Mayoral', 1.00, 146.06132075471697, 0.006846439528499919, 6417, 'SWIVEL Mark', 1060, 12, 0, 3455, 1, 0, 0, 17, 'LYON Michael'); +INSERT INTO public.assertion (assertion_type, id, contest_name, current_risk, difficulty, diluted_margin, estimated_samples_to_audit, loser, margin, one_vote_over_count, one_vote_under_count, optimistic_samples_to_audit, other_count, two_vote_over_count, two_vote_under_count, version, winner) VALUES ('NEN', 9, 'Byron Mayoral', 1.00, 125.36437246963563, 0.007976747941223963, 7368, 'COOREY Cate', 1235, 12, 0, 3820, 0, 1, 0, 17, 'LYON Michael'); +INSERT INTO public.assertion (assertion_type, id, contest_name, current_risk, difficulty, diluted_margin, estimated_samples_to_audit, loser, margin, one_vote_over_count, one_vote_under_count, optimistic_samples_to_audit, other_count, two_vote_over_count, two_vote_under_count, version, winner) VALUES ('NEN', 10, 'Byron Mayoral', 1.00, 47.07357859531773, 0.02124333925399645, 2272, 'DEY Duncan', 3289, 13, 0, 1178, 0, 0, 0, 17, 'LYON Michael'); +INSERT INTO public.assertion (assertion_type, id, contest_name, current_risk, difficulty, diluted_margin, estimated_samples_to_audit, loser, margin, one_vote_over_count, one_vote_under_count, optimistic_samples_to_audit, other_count, two_vote_over_count, two_vote_under_count, version, winner) VALUES ('NEN', 11, 'Byron Mayoral', 1.00, 106.11720356408499, 0.009423542709510738, 4662, 'DEY Duncan', 1459, 12, 0, 2510, 1, 0, 0, 17, 'LYON Michael'); +INSERT INTO public.assertion (assertion_type, id, contest_name, current_risk, difficulty, diluted_margin, estimated_samples_to_audit, loser, margin, one_vote_over_count, one_vote_under_count, optimistic_samples_to_audit, other_count, two_vote_over_count, two_vote_under_count, version, winner) VALUES ('NEN', 12, 'Byron Mayoral', 1.00, 85.87077093732668, 0.01164540610366543, 4145, 'PUGH Asren', 1803, 13, 0, 2149, 0, 0, 0, 17, 'LYON Michael'); +INSERT INTO public.assertion (assertion_type, id, contest_name, current_risk, difficulty, diluted_margin, estimated_samples_to_audit, loser, margin, one_vote_over_count, one_vote_under_count, optimistic_samples_to_audit, other_count, two_vote_over_count, two_vote_under_count, version, winner) VALUES ('NEN', 13, 'Byron Mayoral', 1.00, 65.88297872340425, 0.01517842725658001, 2896, 'PUGH Asren', 2350, 12, 0, 1559, 1, 0, 0, 17, 'LYON Michael'); +INSERT INTO public.assertion (assertion_type, id, contest_name, current_risk, difficulty, diluted_margin, estimated_samples_to_audit, loser, margin, one_vote_over_count, one_vote_under_count, optimistic_samples_to_audit, other_count, two_vote_over_count, two_vote_under_count, version, winner) VALUES ('NEN', 28, 'City of Boulder Mayoral Candidates', 1.00, 97.42915309446254, 0.010263868341649742, 710, 'Bob Yates', 1228, 0, 0, 710, 0, 0, 0, 13, 'Aaron Brockett'); +INSERT INTO public.assertion (assertion_type, id, contest_name, current_risk, difficulty, diluted_margin, estimated_samples_to_audit, loser, margin, one_vote_over_count, one_vote_under_count, optimistic_samples_to_audit, other_count, two_vote_over_count, two_vote_under_count, version, winner) VALUES ('NEB', 1, 'Byron Mayoral', 1.00, 73.79647283126788, 0.013550783142257387, 4338, 'HUNTER Alan', 2098, 12, 0, 2249, 0, 1, 0, 17, 'LYON Michael'); +INSERT INTO public.assertion (assertion_type, id, contest_name, current_risk, difficulty, diluted_margin, estimated_samples_to_audit, loser, margin, one_vote_over_count, one_vote_under_count, optimistic_samples_to_audit, other_count, two_vote_over_count, two_vote_under_count, version, winner) VALUES ('NEB', 2, 'Byron Mayoral', 1.00, 82.97159699892819, 0.012052317132246084, 4878, 'CLARKE Bruce', 1866, 12, 0, 2529, 0, 1, 0, 17, 'LYON Michael'); +INSERT INTO public.assertion (assertion_type, id, contest_name, current_risk, difficulty, diluted_margin, estimated_samples_to_audit, loser, margin, one_vote_over_count, one_vote_under_count, optimistic_samples_to_audit, other_count, two_vote_over_count, two_vote_under_count, version, winner) VALUES ('NEB', 3, 'Byron Mayoral', 1.00, 55.13710826210826, 0.01813660584530922, 3242, 'ANDERSON John', 2808, 12, 0, 1681, 0, 1, 0, 17, 'LYON Michael'); +INSERT INTO public.assertion (assertion_type, id, contest_name, current_risk, difficulty, diluted_margin, estimated_samples_to_audit, loser, margin, one_vote_over_count, one_vote_under_count, optimistic_samples_to_audit, other_count, two_vote_over_count, two_vote_under_count, version, winner) VALUES ('NEB', 4, 'Byron Mayoral', 1.00, 46.285500747384155, 0.02160503794606814, 2722, 'MCILRATH Christopher', 3345, 12, 0, 1411, 0, 1, 0, 17, 'LYON Michael'); +INSERT INTO public.assertion (assertion_type, id, contest_name, current_risk, difficulty, diluted_margin, estimated_samples_to_audit, loser, margin, one_vote_over_count, one_vote_under_count, optimistic_samples_to_audit, other_count, two_vote_over_count, two_vote_under_count, version, winner) VALUES ('NEN', 5, 'Byron Mayoral', 1.00, 67.25673327541269, 0.014868399806232844, 3954, 'COOREY Cate', 2302, 12, 0, 2050, 0, 1, 0, 17, 'LYON Michael'); +INSERT INTO public.assertion (assertion_type, id, contest_name, current_risk, difficulty, diluted_margin, estimated_samples_to_audit, loser, margin, one_vote_over_count, one_vote_under_count, optimistic_samples_to_audit, other_count, two_vote_over_count, two_vote_under_count, version, winner) VALUES ('NEN', 14, 'Byron Mayoral', 1.00, 51.69449081803005, 0.019344421120620056, 2272, 'PUGH Asren', 2995, 12, 0, 1223, 1, 0, 0, 17, 'LYON Michael'); +INSERT INTO public.assertion (assertion_type, id, contest_name, current_risk, difficulty, diluted_margin, estimated_samples_to_audit, loser, margin, one_vote_over_count, one_vote_under_count, optimistic_samples_to_audit, other_count, two_vote_over_count, two_vote_under_count, version, winner) VALUES ('NEN', 15, 'Byron Mayoral', 1.00, 76.00638193421699, 0.013156789924107863, 4467, 'COOREY Cate', 2037, 12, 0, 2316, 0, 1, 0, 17, 'LYON Michael'); +INSERT INTO public.assertion (assertion_type, id, contest_name, current_risk, difficulty, diluted_margin, estimated_samples_to_audit, loser, margin, one_vote_over_count, one_vote_under_count, optimistic_samples_to_audit, other_count, two_vote_over_count, two_vote_under_count, version, winner) VALUES ('NEN', 16, 'Byron Mayoral', 1.00, 67.93549802544976, 0.014719844986274827, 3279, 'DEY Duncan', 2279, 13, 0, 1700, 0, 0, 0, 17, 'LYON Michael'); +INSERT INTO public.assertion (assertion_type, id, contest_name, current_risk, difficulty, diluted_margin, estimated_samples_to_audit, loser, margin, one_vote_over_count, one_vote_under_count, optimistic_samples_to_audit, other_count, two_vote_over_count, two_vote_under_count, version, winner) VALUES ('NEN', 17, 'Byron Mayoral', 1.00, 62.479822437449556, 0.016005167124172454, 3015, 'PUGH Asren', 2478, 13, 0, 1563, 0, 0, 0, 17, 'LYON Michael'); +INSERT INTO public.assertion (assertion_type, id, contest_name, current_risk, difficulty, diluted_margin, estimated_samples_to_audit, loser, margin, one_vote_over_count, one_vote_under_count, optimistic_samples_to_audit, other_count, two_vote_over_count, two_vote_under_count, version, winner) VALUES ('NEN', 18, 'Byron Mayoral', 1.00, 52.787248550971704, 0.018943968997254965, 2320, 'PUGH Asren', 2933, 12, 0, 1249, 1, 0, 0, 17, 'LYON Michael'); +INSERT INTO public.assertion (assertion_type, id, contest_name, current_risk, difficulty, diluted_margin, estimated_samples_to_audit, loser, margin, one_vote_over_count, one_vote_under_count, optimistic_samples_to_audit, other_count, two_vote_over_count, two_vote_under_count, version, winner) VALUES ('NEN', 19, 'Byron Mayoral', 1.00, 58.18301390454716, 0.017187146778621022, 2809, 'PUGH Asren', 2661, 13, 0, 1456, 0, 0, 0, 17, 'LYON Michael'); + +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (5, 'COOREY Cate'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (5, 'LYON Michael'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (6, 'LYON Michael'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (6, 'DEY Duncan'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (7, 'LYON Michael'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (7, 'PUGH Asren'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (8, 'LYON Michael'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (8, 'SWIVEL Mark'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (9, 'COOREY Cate'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (9, 'LYON Michael'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (9, 'SWIVEL Mark'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (10, 'COOREY Cate'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (10, 'LYON Michael'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (10, 'DEY Duncan'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (11, 'LYON Michael'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (11, 'DEY Duncan'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (11, 'SWIVEL Mark'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (12, 'COOREY Cate'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (12, 'LYON Michael'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (12, 'PUGH Asren'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (13, 'LYON Michael'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (13, 'DEY Duncan'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (13, 'PUGH Asren'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (14, 'LYON Michael'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (14, 'PUGH Asren'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (14, 'SWIVEL Mark'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (15, 'COOREY Cate'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (15, 'LYON Michael'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (15, 'DEY Duncan'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (15, 'SWIVEL Mark'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (16, 'COOREY Cate'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (16, 'LYON Michael'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (16, 'DEY Duncan'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (16, 'PUGH Asren'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (17, 'COOREY Cate'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (17, 'LYON Michael'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (17, 'PUGH Asren'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (17, 'SWIVEL Mark'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (18, 'LYON Michael'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (18, 'DEY Duncan'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (18, 'PUGH Asren'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (18, 'SWIVEL Mark'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (19, 'COOREY Cate'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (19, 'LYON Michael'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (19, 'DEY Duncan'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (19, 'PUGH Asren'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (19, 'SWIVEL Mark'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (25, 'HAUVILLE Leo'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (25, 'CAMPBELL Liz'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (28, 'Aaron Brockett'); +INSERT INTO public.assertion_assumed_continuing (id, assumed_continuing) VALUES (28, 'Bob Yates'); + +INSERT INTO public.generate_assertions_summary (id, contest_name, error, message, version, warning, winner) VALUES (1, 'Tied_IRV', 'TIED_WINNERS', 'Tied winners: Alice, Chuan.', 0, '', ''); +INSERT INTO public.generate_assertions_summary (id, contest_name, error, message, version, warning, winner) VALUES (2, 'Byron Mayoral', '', '', 0, '', 'LYON Michael'); +INSERT INTO public.generate_assertions_summary (id, contest_name, error, message, version, warning, winner) VALUES (3, 'Kempsey Mayoral', '', '', 0, '', 'HAUVILLE Leo'); +INSERT INTO public.generate_assertions_summary (id, contest_name, error, message, version, warning, winner) VALUES (4, 'City of Boulder Mayoral Candidates', '', '', 0, '', 'Aaron Brockett'); \ No newline at end of file