def testfindExpectedDesign(self):
        """Perform the actual search for a design"""
        # Generate all the design candidates
        # Instantiate cost model
        cmConfig = {
            'weight_network': 4,
            'weight_disk': 1,
            'weight_skew': 1,
            'nodes': 10,
            'max_memory': 1024,
            'skew_intervals': 10,
            'address_size': 64,
            'window_size': 500
        }
        cm = CostModel(self.collections, self.workload, cmConfig)
        d0 = self.getManMadeDesign()
        print d0
        output_design = d0.toJSON()
        cost0 = cm.overallCost(d0)
        ds = Deserializer(output_design)
        d1 = ds.Deserialize()
        print d1
        cost1 = cm.overallCost(d1)

        self.assertEqual(cost1, cost0)
Ejemplo n.º 2
0
    def getDesign(self, design_path):
        assert design_path, "design path is empty"

        deserializer = Deserializer(design_path)

        design = deserializer.Deserialize()
        LOG.info("current design \n%s" % design)

        return design

    ## DEF


## CLASS
Ejemplo n.º 3
0
# mongo-d4-benchmark-replay
sys.path.append(os.path.join(basedir, ".."))

from dbcombiner import DBCombiner
from dbdenormalizer import DBDenormalizer
from design_deserializer import Deserializer
from design import Design

def test_combine_deletes(combiner, operations):
    return combiner.combineDeletes(operations)

if __name__=="__main__":
    design_path = r"/home/ruiz1/mongodb-d4/exps/tpcc_design"
    print design_path
    deserializer = Deserializer()
    deserializer.loadDesignFile(design_path)
    design = Design()
    design.data = deserializer.json_doc
    print design.data

    dm = DBDenormalizer(None, None, None, None, design)
    graph = dm.constructGraph()
    dm.metadata_db = pymongo.Connection('localhost:27017')['tpcc_meta']
    parent_keys = dm.readSchema('schema')

    combiner = DBCombiner(None, design, graph, parent_keys)

    operations = []
    for i in range(5):
        op = dict()
Ejemplo n.º 4
0
                LOG.warn("Dropping %s.%s" % (dataset_db.name, col_name))
            dataset_db.drop_collection(col_name)
        ## FOR
    ## IF

    # This designer is only used for input processing
    designer = Designer(config, metadata_db, dataset_db)
    designer.setOptionsFromArguments(args)

    if args['init_design']:
        designer.load(False, None, True)
        exit("Initial Design done")
    ## IF
    if args['input_design']:
        # evaluate the input design and then quit
        ds = Deserializer()
        ds.loadDesignFile(args['input_design'])
        replay_design = ds.Deserialize()
        LOG.info("Read in design\n%s", replay_design)
        designer.load(True, replay_design)
        exit("Design evaluation done")
    ## IF

    start = time.time()
    try:
        ## ----------------------------------------------
        ## STEP 1: INPUT PROCESSING
        ## ----------------------------------------------
        if not (args['no_load'] or args['no_post_process']):
            if not args['mysql']:
                # If the user passed in '-', then we'll read from stdin
Ejemplo n.º 5
0
             LOG.warn("Dropping %s.%s" % (dataset_db.name, col_name))
         dataset_db.drop_collection(col_name)
     ## FOR
 ## IF
 
 # This designer is only used for input processing
 designer = Designer(config, metadata_db, dataset_db)
 designer.setOptionsFromArguments(args)
 
 if args['init_design']:
     designer.load(False, None, True)
     exit("Initial Design done")
 ## IF
 if args['input_design']:
     # evaluate the input design and then quit
     ds = Deserializer()
     ds.loadDesignFile(args['input_design'])
     replay_design = ds.Deserialize()
     LOG.info("Read in design\n%s", replay_design)
     designer.load(True, replay_design)
     exit("Design evaluation done")
 ## IF
 
 start = time.time()
 try:
     ## ----------------------------------------------
     ## STEP 1: INPUT PROCESSING
     ## ----------------------------------------------
     if not (args['no_load'] or args['no_post_process']):
         if not args['mysql']:
             # If the user passed in '-', then we'll read from stdin