~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to client/drizzletest.cc

  • Committer: Brian Aker
  • Date: 2009-10-02 21:34:26 UTC
  • mfrom: (1134.1.4 bug426504)
  • Revision ID: brian@gaz-20091002213426-7ojknrpknoedaprl
Merge Monty

Show diffs side-by-side

added added

removed removed

Lines of Context:
386
386
  char *query, *query_buf,*first_argument,*last_argument,*end;
387
387
  int first_word_len, query_len;
388
388
  bool abort_on_error;
389
 
  struct st_expected_errors expected_errors;
390
 
  char require_file[FN_REFLEN];
 
389
  st_expected_errors expected_errors;
 
390
  string require_file;
391
391
  enum enum_commands type;
 
392
 
 
393
  st_command()
 
394
    : query(NULL), query_buf(NULL), first_argument(NULL), last_argument(NULL),
 
395
      end(NULL), first_word_len(0), query_len(0), abort_on_error(false),
 
396
      require_file(""), type(Q_CONNECTION)
 
397
  {
 
398
    memset(&expected_errors, 0, sizeof(st_expected_errors));
 
399
  }
 
400
 
 
401
  ~st_command()
 
402
  {
 
403
    if (query_buf != NULL)
 
404
    {
 
405
      free(query_buf);
 
406
    }
 
407
  }
392
408
};
393
409
 
394
410
TYPELIB command_typelib= {array_elements(command_names),"",
890
906
  for (iter= q_lines.begin() ; iter < q_lines.end() ; iter++)
891
907
  {
892
908
    struct st_command * q_line= *iter;
893
 
    if (q_line->query_buf != NULL)
894
 
    {
895
 
      free(q_line->query_buf);
896
 
    }
897
 
    free(q_line);
 
909
    delete q_line;
898
910
  }
899
911
 
900
912
  for (i= 0; i < 10; i++)
1545
1557
 
1546
1558
*/
1547
1559
 
1548
 
static void check_require(string* ds, const char *fname)
 
1560
static void check_require(string* ds, const string &fname)
1549
1561
{
1550
1562
 
1551
1563
 
1552
 
  if (string_cmp(ds, fname))
 
1564
  if (string_cmp(ds, fname.c_str()))
1553
1565
  {
1554
1566
    char reason[FN_REFLEN];
1555
 
    fn_format(reason, fname, "", "", MY_REPLACE_EXT | MY_REPLACE_DIR);
 
1567
    fn_format(reason, fname.c_str(), "", "", MY_REPLACE_EXT | MY_REPLACE_DIR);
1556
1568
    abort_not_supported_test("Test requires: '%s'", reason);
1557
1569
  }
1558
1570
  return;
2094
2106
    const size_t len= strlen(get_value_str);
2095
2107
    if (strncmp(p, get_value_str, len)==0)
2096
2108
    {
2097
 
      struct st_command command;
2098
 
      memset(&command, 0, sizeof(command));
 
2109
      st_command command;
2099
2110
      command.query= (char*)p;
2100
2111
      command.first_word_len= len;
2101
2112
      command.first_argument= command.query + len;
3324
3335
}
3325
3336
 
3326
3337
 
3327
 
static void do_get_file_name(struct st_command *command,
3328
 
                             char* dest, uint32_t dest_max_len)
 
3338
static void do_get_file_name(struct st_command *command, string &dest)
3329
3339
{
3330
3340
  char *p= command->first_argument, *name;
3331
3341
  if (!*p)
3336
3346
  if (*p)
3337
3347
    *p++= 0;
3338
3348
  command->last_argument= p;
3339
 
  strncpy(dest, name, dest_max_len - 1);
 
3349
  if (opt_testdir != NULL)
 
3350
  {
 
3351
    dest= opt_testdir;
 
3352
    if (dest[dest.length()] != '/')
 
3353
      dest.append("/");
 
3354
  }
 
3355
  dest.append(name);
3340
3356
}
3341
3357
 
3342
3358
 
4488
4504
    *command_ptr= q_lines[parser.current_line];
4489
4505
    return(0);
4490
4506
  }
4491
 
  if (!(*command_ptr= command=
4492
 
        (struct st_command*) malloc(sizeof(*command))))
4493
 
    die("command malloc failed");
4494
 
  memset(command, 0, sizeof(*command));
 
4507
  if (!(*command_ptr= command= new st_command))
 
4508
    die("command construction failed");
4495
4509
  q_lines.push_back(command);
4496
4510
  command->type= Q_UNKNOWN;
4497
4511
 
5263
5277
  uint32_t i;
5264
5278
 
5265
5279
 
5266
 
  if (command->require_file[0])
 
5280
  if (! command->require_file.empty())
5267
5281
  {
5268
5282
    /*
5269
5283
      The query after a "--require" failed. This is fine as long the server
5422
5436
    Create a temporary dynamic string to contain the output from
5423
5437
    this query.
5424
5438
  */
5425
 
  if (command->require_file[0])
 
5439
  if (! command->require_file.empty())
5426
5440
  {
5427
5441
    ds= &ds_result;
5428
5442
  }
5465
5479
    ds= save_ds;
5466
5480
  }
5467
5481
 
5468
 
  if (command->require_file[0])
 
5482
  if (! command->require_file.empty())
5469
5483
  {
5470
5484
    /* A result file was specified for _this_ query
5471
5485
       and the output should be checked against an already
5596
5610
  struct st_command *command;
5597
5611
  bool q_send_flag= 0, abort_flag= 0;
5598
5612
  uint32_t command_executed= 0, last_command_executed= 0;
5599
 
  char save_file[FN_REFLEN];
 
5613
  string save_file("");
5600
5614
  struct stat res_info;
5601
5615
  MY_INIT(argv[0]);
5602
5616
 
5603
 
  save_file[0]= 0;
5604
5617
  TMPDIR[0]= 0;
5605
5618
 
5606
5619
  /* Init expected errors */
5795
5808
        /* Check for special property for this query */
5796
5809
        display_result_vertically|= (command->type == Q_QUERY_VERTICAL);
5797
5810
 
5798
 
        if (save_file[0])
 
5811
        if (! save_file.empty())
5799
5812
        {
5800
 
          strncpy(command->require_file, save_file, sizeof(save_file) - 1);
5801
 
          save_file[0]= 0;
 
5813
          command->require_file= save_file;
 
5814
          save_file.clear();
5802
5815
        }
5803
5816
        run_query(cur_con, command, flags);
5804
5817
        command_executed++;
5835
5848
        command->last_argument= command->end;
5836
5849
        break;
5837
5850
      case Q_REQUIRE:
5838
 
        do_get_file_name(command, save_file, sizeof(save_file));
 
5851
        do_get_file_name(command, save_file);
5839
5852
        break;
5840
5853
      case Q_ERROR:
5841
5854
        do_get_errcodes(command);