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)
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
# 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()
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