~mdcallag/+junk/5.1-map

« back to all changes in this revision

Viewing changes to storage/ndb/test/ndbapi/testNodeRestart.cpp

  • Committer: msvensson at pilot
  • Date: 2007-04-24 09:11:45 UTC
  • mfrom: (2469.1.106)
  • Revision ID: sp1r-msvensson@pilot.blaudden-20070424091145-10463
Merge pilot.blaudden:/home/msvensson/mysql/my51-m-mysql_upgrade
into  pilot.blaudden:/home/msvensson/mysql/mysql-5.1-maint

Show diffs side-by-side

added added

removed removed

Lines of Context:
887
887
    return NDBT_FAILED;
888
888
  
889
889
  NdbSleep_MilliSleep(3000);
 
890
  Vector<int> nodes;
 
891
  for (Uint32 i = 0; i<restarter.getNumDbNodes(); i++)
 
892
    nodes.push_back(restarter.getDbNodeId(i));
890
893
  
891
894
retry:
892
895
  if(hugoOps.startTransaction(pNdb) != 0)
910
913
    nodeId = restarter.getDbNodeId(rand() % restarter.getNumDbNodes());
911
914
  } while (nodeId == node);
912
915
  
913
 
  if (restarter.insertErrorInAllNodes(7030))
914
 
    return NDBT_FAILED;
915
 
  
 
916
  ndbout_c("7031 to %d", nodeId);
916
917
  if (restarter.insertErrorInNode(nodeId, 7031))
917
918
    return NDBT_FAILED;
 
919
 
 
920
  for (Uint32 i = 0; i<nodes.size(); i++)
 
921
  {
 
922
    if (nodes[i] != nodeId)
 
923
      if (restarter.insertErrorInNode(nodes[i], 7030))
 
924
        return NDBT_FAILED;
 
925
  }
918
926
  
919
927
  NdbSleep_MilliSleep(500);
920
928
  
1223
1231
    if (restarter.startNodes(&victim, 1))
1224
1232
      return NDBT_FAILED;
1225
1233
 
1226
 
    if (restarter.waitNodesStartPhase(&victim, 1, 2))
1227
 
      return NDBT_FAILED;
 
1234
    NdbSleep_SecSleep(3);
1228
1235
  }
1229
1236
 
1230
1237
  if (restarter.waitNodesNoStart(&victim, 1))
1415
1422
  return NDBT_OK;
1416
1423
}
1417
1424
 
 
1425
int
 
1426
runBug27003(NDBT_Context* ctx, NDBT_Step* step)
 
1427
{
 
1428
  int result = NDBT_OK;
 
1429
  int loops = ctx->getNumLoops();
 
1430
  int records = ctx->getNumRecords();
 
1431
  NdbRestarter res;
 
1432
  
 
1433
  static const int errnos[] = { 4025, 4026, 4027, 4028, 0 };
 
1434
 
 
1435
  int node = res.getRandomNotMasterNodeId(rand());
 
1436
  ndbout_c("node: %d", node);
 
1437
  if (res.restartOneDbNode(node, true, true, true))
 
1438
    return NDBT_FAILED;
 
1439
 
 
1440
  Uint32 pos = 0;
 
1441
  for (Uint32 i = 0; i<loops; i++)
 
1442
  {
 
1443
    while (errnos[pos] != 0)
 
1444
    {
 
1445
      ndbout_c("Tesing err: %d", errnos[pos]);
 
1446
      
 
1447
      if (res.waitNodesNoStart(&node, 1))
 
1448
        return NDBT_FAILED;
 
1449
 
 
1450
      if (res.insertErrorInNode(node, 1000))
 
1451
        return NDBT_FAILED;
 
1452
      
 
1453
      if (res.insertErrorInNode(node, errnos[pos]))
 
1454
        return NDBT_FAILED;
 
1455
      
 
1456
      int val2[] = { DumpStateOrd::CmvmiSetRestartOnErrorInsert, 3 };
 
1457
      if (res.dumpStateOneNode(node, val2, 2))
 
1458
        return NDBT_FAILED;
 
1459
      
 
1460
      res.startNodes(&node, 1);
 
1461
      NdbSleep_SecSleep(3);
 
1462
      pos++;
 
1463
    }
 
1464
    pos = 0;
 
1465
  }
 
1466
 
 
1467
  if (res.waitNodesNoStart(&node, 1))
 
1468
    return NDBT_FAILED;
 
1469
  
 
1470
  res.startNodes(&node, 1);
 
1471
  if (res.waitClusterStarted())
 
1472
    return NDBT_FAILED;
 
1473
  
 
1474
  return NDBT_OK;
 
1475
}
 
1476
 
 
1477
 
 
1478
int
 
1479
runBug27283(NDBT_Context* ctx, NDBT_Step* step)
 
1480
{
 
1481
  int result = NDBT_OK;
 
1482
  int loops = ctx->getNumLoops();
 
1483
  int records = ctx->getNumRecords();
 
1484
  NdbRestarter res;
 
1485
 
 
1486
  if (res.getNumDbNodes() < 2)
 
1487
  {
 
1488
    return NDBT_OK;
 
1489
  }
 
1490
 
 
1491
  static const int errnos[] = { 7181, 7182, 0 };
 
1492
  
 
1493
  Uint32 pos = 0;
 
1494
  for (Uint32 i = 0; i<loops; i++)
 
1495
  {
 
1496
    while (errnos[pos] != 0)
 
1497
    {
 
1498
      int master = res.getMasterNodeId();
 
1499
      int next = res.getNextMasterNodeId(master);
 
1500
      int next2 = res.getNextMasterNodeId(next);
 
1501
      
 
1502
      int node = (i & 1) ? next : next2;
 
1503
      ndbout_c("Tesing err: %d", errnos[pos]);
 
1504
      if (res.insertErrorInNode(next, errnos[pos]))
 
1505
        return NDBT_FAILED;
 
1506
 
 
1507
      NdbSleep_SecSleep(3);
 
1508
      
 
1509
      if (res.waitClusterStarted())
 
1510
        return NDBT_FAILED;
 
1511
      
 
1512
      pos++;
 
1513
    }
 
1514
    pos = 0;
 
1515
  }
 
1516
  
 
1517
  return NDBT_OK;
 
1518
}
 
1519
 
 
1520
int
 
1521
runBug27466(NDBT_Context* ctx, NDBT_Step* step)
 
1522
{
 
1523
  int result = NDBT_OK;
 
1524
  int loops = ctx->getNumLoops();
 
1525
  int records = ctx->getNumRecords();
 
1526
  NdbRestarter res;
 
1527
 
 
1528
  if (res.getNumDbNodes() < 2)
 
1529
  {
 
1530
    return NDBT_OK;
 
1531
  }
 
1532
 
 
1533
  Uint32 pos = 0;
 
1534
  for (Uint32 i = 0; i<loops; i++)
 
1535
  {
 
1536
    int node1 = res.getDbNodeId(rand() % res.getNumDbNodes());
 
1537
    int node2 = node1;
 
1538
    while (node1 == node2)
 
1539
    {
 
1540
      node2 = res.getDbNodeId(rand() % res.getNumDbNodes());
 
1541
    }
 
1542
 
 
1543
    if (res.restartOneDbNode(node1, false, true, true))
 
1544
      return NDBT_FAILED;
 
1545
    
 
1546
    if (res.waitNodesNoStart(&node1, 1))
 
1547
      return NDBT_FAILED;
 
1548
    
 
1549
    int val2[] = { DumpStateOrd::CmvmiSetRestartOnErrorInsert, 1 };
 
1550
    if (res.dumpStateOneNode(node1, val2, 2))
 
1551
      return NDBT_FAILED;
 
1552
    
 
1553
    if (res.insertErrorInNode(node2, 8039))
 
1554
      return NDBT_FAILED;
 
1555
 
 
1556
    res.startNodes(&node1, 1);
 
1557
    NdbSleep_SecSleep(3);
 
1558
    if (res.waitNodesNoStart(&node1, 1))
 
1559
      return NDBT_FAILED;
 
1560
    NdbSleep_SecSleep(5); // Wait for delayed INCL_NODECONF to arrive
 
1561
    
 
1562
    res.startNodes(&node1, 1);
 
1563
    if (res.waitClusterStarted())
 
1564
      return NDBT_FAILED;
 
1565
  }
 
1566
  
 
1567
  return NDBT_OK;
 
1568
}
 
1569
 
1418
1570
NDBT_TESTSUITE(testNodeRestart);
1419
1571
TESTCASE("NoLoad", 
1420
1572
         "Test that one node at a time can be stopped and then restarted "\
1763
1915
  INITIALIZER(runLoadTable);
1764
1916
  INITIALIZER(runBug26450);
1765
1917
}
 
1918
TESTCASE("Bug27003", ""){
 
1919
  INITIALIZER(runBug27003);
 
1920
}
 
1921
TESTCASE("Bug27283", ""){
 
1922
  INITIALIZER(runBug27283);
 
1923
}
 
1924
TESTCASE("Bug27466", ""){
 
1925
  INITIALIZER(runBug27466);
 
1926
}
1766
1927
NDBT_TESTSUITE_END(testNodeRestart);
1767
1928
 
1768
1929
int main(int argc, const char** argv){