runApiTests($api, $params); $this->checkAutoIncrementIdsAreMoreThanFourBillion(); } private function checkAutoIncrementIdsAreMoreThanFourBillion() { $fieldsThatShouldNotOverflow = array( 'log_visit' => 'idvisit', 'log_link_visit_action' => 'idlink_va' ); $this->assertGreaterThan(4294967294, self::$fixture->maxUnsignedIntegerValue); foreach($fieldsThatShouldNotOverflow as $table => $autoIncrementField) { $table = Common::prefixTable($table); $value = Db::fetchOne("SELECT MAX($autoIncrementField) FROM $table "); $this->assertGreaterThan(self::$fixture->maxUnsignedIntegerValue, $value, 'in ' . $table); } } public function getApiForTesting() { $apiToCall = array( 'VisitTime', 'VisitsSummary', 'VisitorInterest', 'VisitFrequency', 'DevicesDetection', 'UserCountry', 'Provider', 'Goals', 'CustomVariables', 'CoreAdminHome', 'DevicePlugins', 'Actions', 'Referrers', ); return array( array($apiToCall, array( 'idSite' => self::$fixture->idSite, 'date' => self::$fixture->dateTime, 'compareAgainst' => 'OneVisitorTwoVisits_withCookieSupport', )) ); } } SimulateAutoIncrementIntegerOverflowTest::$fixture = new OneVisitorTwoVisits(); SimulateAutoIncrementIntegerOverflowTest::$fixture->useThirdPartyCookies = true; SimulateAutoIncrementIntegerOverflowTest::$fixture->useSiteSearch = true; SimulateAutoIncrementIntegerOverflowTest::$fixture->simulateIntegerOverflow = true;