示例#1
0
 def generate_integer_field(self, row_index, field, field_options):
     if field_options == "primary-key":
         return 1 + row_index
     else:
         lower, upper = field_options.split(',')
         return pseudorandom_long([self.specifier, field, row_index],
                                  int(lower), int(upper))
示例#2
0
 def generate_field(self, field, row_index):
     field_specification = self.fields[field]
     if field_specification.optional:
         should_generate = pseudorandom_long(
             [self.specifier, field, 'optional', row_index], 2)
         if not should_generate: return None
     return self.field_generators[field_specification.type](
         row_index, field, field_specification.options)
示例#3
0
 def generate_foreign_key(self, row_index, field, field_options):
     foreign_table = field_options
     foreign_row_generator = RowGenerator.get_instance(
         self.schema, self.database, foreign_table, self.config)
     foreign_table_bootstrap_count = int(
         float(self.config['mysql']['schemas'][self.schema]['tables']
               [foreign_table][self.database]['size']))
     foreign_row_index = pseudorandom_long(
         [self.specifier, field, row_index], foreign_table_bootstrap_count)
     return foreign_row_generator.generate_primary_key(foreign_row_index)
示例#4
0
    def produce_one(self):
        if self.operation == 'insert':
            # max id is the next row index, because id is 1 based, row index is 0 based
            row_idx = self.table.max_id
            self.table.max_id += 1
        else:
            # generate id for update and delete message
            row_idx = pseudorandom_long([self.table.seed, 'id', self.operation, self.produced_count], 0,
                                        self.table.max_id)

        self.produced_count += 1
        row_gen = self.table.row_gen
        data = row_gen.generate_row(row_idx)
        pk_name = row_gen.primary_key_field
        pk_value = row_gen.generate_primary_key(row_idx)
        return maxwell_message(self.table.database, self.table.table_name, self.operation, data, pk_name, pk_value)
示例#5
0
    def produce_one(self):
        if self.operation == 'insert':
            # max id is the next row index, because id is 1 based, row index is 0 based
            row_idx = self.table.max_id
            self.table.max_id += 1
        else:
            # generate id for update and delete message
            row_idx = pseudorandom_long(
                [self.table.seed, 'id', self.operation, self.produced_count],
                0, self.table.max_id)

        self.produced_count += 1
        row_gen = self.table.row_gen
        data = row_gen.generate_row(row_idx)
        pk_name = row_gen.primary_key_field
        pk_value = row_gen.generate_primary_key(row_idx)
        return maxwell_message(self.table.database, self.table.table_name,
                               self.operation, data, pk_name, pk_value)
示例#6
0
 def generate_enum(self, row_index, field, field_options):
     values = field_options.split(',')
     return values[pseudorandom_long([self.specifier, field, row_index], 0, len(values))]
示例#7
0
 def generate_date_time(self, row_index, field, field_options):
     lower, upper = 1142557409, 1773709409
     epoch = pseudorandom_long([self.specifier, field, row_index], lower, upper)
     format = "%Y-%m-%d %H:%M:%S"
     return datetime.fromtimestamp(epoch).strftime(format)
示例#8
0
 def generate_foreign_key(self, row_index, field, field_options):
     foreign_table = field_options
     foreign_row_generator = RowGenerator.get_instance(self.schema, self.database, foreign_table, self.config)
     foreign_table_bootstrap_count = int(float(self.config['mysql']['schemas'][self.schema]['tables'][foreign_table][self.database]['size']))
     foreign_row_index = pseudorandom_long([self.specifier, field, row_index], foreign_table_bootstrap_count)
     return foreign_row_generator.generate_primary_key(foreign_row_index)
示例#9
0
 def generate_integer_field(self, row_index, field, field_options):
     if field_options == "primary-key":
         return 1 + row_index
     else:
         lower, upper = field_options.split(',')
         return pseudorandom_long([self.specifier, field, row_index], int(lower), int(upper))
示例#10
0
 def generate_field(self, field, row_index):
     field_specification = self.fields[field]
     if field_specification.optional:
         should_generate = pseudorandom_long([self.specifier, field, 'optional', row_index], 2)
         if not should_generate: return None
     return self.field_generators[field_specification.type](row_index, field, field_specification.options)
示例#11
0
 def generate_enum(self, row_index, field, field_options):
     values = field_options.split(',')
     return values[pseudorandom_long([self.specifier, field, row_index], 0,
                                     len(values))]
示例#12
0
 def generate_date_time(self, row_index, field, field_options):
     lower, upper = 1142557409, 1773709409
     epoch = pseudorandom_long([self.specifier, field, row_index], lower,
                               upper)
     format = "%Y-%m-%d %H:%M:%S"
     return datetime.fromtimestamp(epoch).strftime(format)