public function setUp() { $this->testHandler = new Monolog\Handler\TestHandler(); dbsteward::get_logger()->pushHandler($this->testHandler); dbsteward::set_sql_format('pgsql8'); pgsql8::$table_slony_ids = array(); pgsql8::$sequence_slony_ids = array(); }
public function setUp() { parent::setUp(); dbsteward::set_sql_format('pgsql8'); // reset these flags before each test pgsql8_diff::$as_transaction = TRUE; dbsteward::$require_slony_set_id = FALSE; dbsteward::$require_slony_id = FALSE; dbsteward::$generate_slonik = FALSE; dbsteward::$slonyid_set_value = 1; dbsteward::$slonyid_start_value = 1; // clear these before each test so we don't run into conflicts pgsql8::$table_slony_ids = array(); pgsql8::$sequence_slony_ids = array(); pgsql8_diff::$new_table_dependency = null; pgsql8_diff::$old_table_dependency = null; // rest test fixtures $this->in_doc = null; $this->slonyid_doc = null; }
public function setUp() { parent::setUp(); dbsteward::set_sql_format('pgsql8'); // reset these flags before each test pgsql8_diff::$as_transaction = TRUE; dbsteward::$generate_slonik = FALSE; // clear these before each test so we don't run into conflicts pgsql8::$table_slony_ids = array(); pgsql8::$sequence_slony_ids = array(); pgsql8_diff::$new_table_dependency = null; pgsql8_diff::$old_table_dependency = null; }
private function common_mismatch($a, $b, $expected) { $docxml = <<<XML <dbsteward> <database> <host>db-host</host> <name>dbsteward</name> <role> <application>dbsteward_phpunit_app</application> <owner>deployment</owner> <replication/> <readonly/> </role> <slony clusterName="duplicate_slony_ids_testsuite"> <slonyNode id="1" comment="DSI - Local Primary" dbName="test" dbHost="db-dev1" dbUser="******" dbPassword="******"/> <slonyNode id="2" comment="DSI - Local Backup" dbName="test" dbHost="db-dev1" dbUser="******" dbPassword="******"/> <slonyNode id="3" comment="DSI - Local Backup" dbName="test" dbHost="db-dev1" dbUser="******" dbPassword="******"/> <slonyReplicaSet id="100" originNodeId="1" upgradeSetId="101" comment="common duplicate testing database definition"> <slonyReplicaSetNode id="2" providerNodeId="1"/> <slonyReplicaSetNode id="3" providerNodeId="2"/> </slonyReplicaSet> </slony> <configurationParameter name="TIME ZONE" value="America/New_York"/> </database> <schema name="dbsteward" owner="ROLE_OWNER"> XML; $adoc = new SimpleXMLElement($docxml . $a . "</schema></dbsteward>"); $bdoc = new SimpleXMLElement($docxml . $b . "</schema></dbsteward>"); pgsql8::$table_slony_ids = array(); pgsql8::$sequence_slony_ids = array(); pgsql8::$known_pg_identifiers = array(); // for ease in testing, since replica_sets will be the same between // adoc and bdoc, just use adoc for iterating over replica sets $replica_sets = pgsql8::get_slony_replica_sets($adoc); if ($expected !== false) { $this->expect_exception($expected, function () use($adoc, $bdoc, $replica_sets) { foreach ($replica_sets as $replica_set) { pgsql8::build_upgrade_slonik_replica_set($adoc, $bdoc, $replica_set, $replica_set, __DIR__ . '/../testdata/DuplicateSlonyIdsTest'); } }); } else { $this->expect_no_exception(function () use($adoc, $bdoc, $replica_sets) { foreach ($replica_sets as $replica_set) { pgsql8::build_upgrade_slonik_replica_set($adoc, $bdoc, $replica_set, $replica_set, __DIR__ . '/../testdata/DuplicateSlonyIdsTest'); } }); } }
/** Generates DDL for a build or upgrade given dbxml fragments **/ private function common($old, $new = FALSE, $generate_slonik = TRUE) { pgsql8::$table_slony_ids = array(); pgsql8::$sequence_slony_ids = array(); pgsql8::$known_pg_identifiers = array(); if (is_string($old) && empty($old)) { // $old = <<<XML //<table name="foo" owner="ROLE_OWNER" primaryKey="id" slonyId="1"> // <column name="id" type="int"/> //</table> //<sequence name="seq" owner="ROLE_OWNER" slonyId="4"/> //XML; } $xml_a = <<<XML <dbsteward> <database> <host>db-host</host> <name>dbsteward</name> <role> <application>dbsteward_phpunit_app</application> <owner>deployment</owner> <replication/> <readonly/> </role> <slony clusterName="duplicate_slony_ids_testsuite"> <slonyNode id="1" comment="DSI - Local Primary" dbName="test" dbHost="db-dev1" dbUser="******" dbPassword="******"/> <slonyNode id="2" comment="DSI - Local Backup" dbName="test" dbHost="db-dev1" dbUser="******" dbPassword="******"/> <slonyNode id="3" comment="DSI - Local Backup" dbName="test" dbHost="db-dev1" dbUser="******" dbPassword="******"/> <slonyReplicaSet id="100" originNodeId="1" upgradeSetId="101" comment="common duplicate testing database definition"> <slonyReplicaSetNode id="2" providerNodeId="1"/> <slonyReplicaSetNode id="3" providerNodeId="2"/> </slonyReplicaSet> </slony> <configurationParameter name="TIME ZONE" value="America/New_York"/> </database> <schema name="dbsteward" owner="ROLE_OWNER"> {$old} </schema> </dbsteward> XML; $this->set_xml_content_a($xml_a); if ($new) { $xml_b = <<<XML <dbsteward> <database> <host>db-host</host> <name>dbsteward</name> <role> <application>dbsteward_phpunit_app</application> <owner>deployment</owner> <replication/> <readonly/> </role> <slony clusterName="duplicate_slony_ids_testsuite"> <slonyNode id="1" comment="DSI - Local Primary" dbName="test" dbHost="db-dev1" dbUser="******" dbPassword="******"/> <slonyNode id="2" comment="DSI - Local Backup" dbName="test" dbHost="db-dev1" dbUser="******" dbPassword="******"/> <slonyNode id="3" comment="DSI - Local Backup" dbName="test" dbHost="db-dev1" dbUser="******" dbPassword="******"/> <slonyReplicaSet id="100" originNodeId="1" upgradeSetId="101" comment="common duplicate testing database definition"> <slonyReplicaSetNode id="2" providerNodeId="1"/> <slonyReplicaSetNode id="3" providerNodeId="2"/> </slonyReplicaSet> </slony> <configurationParameter name="TIME ZONE" value="America/New_York"/> </database> <schema name="dbsteward" owner="ROLE_OWNER"> {$new} </schema> </dbsteward> XML; $this->set_xml_content_b($xml_b); ob_start(); try { // new parameters for function: // $old_output_prefix, $old_composite_file, $old_db_doc, $old_files, $new_output_prefix, $new_composite_file, $new_db_doc, $new_files $old_db_doc = simplexml_load_file($this->xml_file_a); $new_db_doc = simplexml_load_file($this->xml_file_b); dbsteward::$generate_slonik = $generate_slonik; pgsql8::build_upgrade('', $old_db_doc, $old_db_doc, array(), $this->output_prefix, $new_db_doc, $new_db_doc, array()); ob_end_clean(); } catch (Exception $ex) { ob_end_clean(); throw $ex; } } else { ob_start(); try { $db_doc = simplexml_load_file($this->xml_file_a); dbsteward::$generate_slonik = $generate_slonik; pgsql8::build($this->output_prefix, $db_doc); ob_end_clean(); } catch (Exception $ex) { ob_end_clean(); throw $ex; } } }
protected function upgrade_db_pgsql8() { $this->apply_options_pgsql8(); // make sure we clear these in case we ran something else before this pgsql8::$table_slony_ids = array(); pgsql8::$sequence_slony_ids = array(); pgsql8::$known_pg_identifiers = array(); // build the upgrade DDL first, incase dbsteward code wants to throw about something $old_db_doc = xml_parser::xml_composite(array($this->xml_file_a)); $new_db_doc = xml_parser::xml_composite(array($this->xml_file_b)); pgsql8::build_upgrade('', $old_db_doc, $old_db_doc, array(), $this->output_prefix, $new_db_doc, $new_db_doc, array()); // upgrade database to "B" with each stage file $this->assertStringNotEqualsFile($this->output_prefix . '_upgrade_stage1_schema1.sql', ''); $this->pgsql8->run_file($this->output_prefix . '_upgrade_stage1_schema1.sql'); $this->pgsql8->run_file($this->output_prefix . '_upgrade_stage2_data1.sql'); $this->pgsql8->run_file($this->output_prefix . '_upgrade_stage3_schema1.sql'); $this->pgsql8->run_file($this->output_prefix . '_upgrade_stage4_data1.sql'); //@TODO: confirm tables defined in B are present }
public function setUp() { parent::setUp(); dbsteward::set_sql_format('pgsql8'); // reset runtime mode flags to their default dbsteward::$single_stage_upgrade = FALSE; dbsteward::$generate_slonik = FALSE; pgsql8_diff::$as_transaction = TRUE; // reset runtime tracking variables pgsql8::$table_slony_ids = array(); pgsql8::$sequence_slony_ids = array(); pgsql8::$known_pg_identifiers = array(); pgsql8_diff::$new_table_dependency = null; pgsql8_diff::$old_table_dependency = null; }