Esempio n. 1
0
 def test_01_setup(self):
     print("\n-----", sys._getframe().f_code.co_name, "-----")
     global data_handler
     dummycore = DummyCore()
     conf = config["domains"][bbclib.convert_id_to_string(domain_id)]
     data_handler = DataHandler(networking=dummycore.networking, config=conf, workingdir="testdir", domain_id=domain_id)
     global transactions
     for i in range(10):
         txobj = bbclib.BBcTransaction()
         evt = bbclib.BBcEvent()
         evt.asset_group_id = asset_group_id1
         evt.asset = bbclib.BBcAsset()
         evt.asset.add(user_id=user_id1, asset_body=b'aaaaaa')
         rtn = bbclib.BBcRelation()
         rtn.asset_group_id = asset_group_id2
         rtn.asset = bbclib.BBcAsset()
         rtn.asset.add(user_id=user_id2, asset_body=b'bbbbbb', asset_file=b'cccccccccc%d' % i)
         ptr = bbclib.BBcPointer()
         ptr.add(transaction_id=txid1)
         rtn.add(pointer=ptr)
         if i > 0:
             ptr = bbclib.BBcPointer()
             ptr.add(transaction_id=transactions[-1].transaction_id)
             rtn.add(pointer=ptr)
         wit = bbclib.BBcWitness()
         txobj.add(event=evt, relation=rtn, witness=wit)
         wit.add_witness(user_id1)
         sig = txobj.sign(private_key=keypair1.private_key, public_key=keypair1.public_key)
         txobj.add_signature(user_id=user_id1, signature=sig)
         txobj.digest()
         transactions.append(txobj)
Esempio n. 2
0
    def create_domain(self, domain_id=ZEROS, config=None):
        """Create domain and register user in the domain

        Args:
            domain_id (bytes): target domain_id to create
            config (dict): configuration for the domain
        Returns:
            bool:
        """
        if domain_id in self.domains:
            return False

        conf = self.config.get_domain_config(domain_id, create_if_new=True)
        if config is not None:
            conf.update(config)
        if 'node_id' not in conf or conf['node_id'] == "":
            node_id = bbclib.get_random_id()
            conf['node_id'] = bbclib.convert_id_to_string(node_id)
            self.config.update_config()
        else:
            node_id = bbclib.convert_idstring_to_bytes(conf.get('node_id'))

        self.domains[domain_id] = dict()
        self.domains[domain_id]['node_id'] = node_id
        self.domains[domain_id]['name'] = node_id.hex()[:4]
        self.domains[domain_id]['neighbor'] = NeighborInfo(network=self, domain_id=domain_id, node_id=node_id,
                                                           my_info=self._get_my_nodeinfo(node_id))
        self.domains[domain_id]['topology'] = TopologyManagerBase(network=self, domain_id=domain_id, node_id=node_id,
                                                                  logname=self.logname, loglevel=self.loglevel)
        self.domains[domain_id]['user'] = UserMessageRouting(self, domain_id, logname=self.logname,
                                                             loglevel=self.loglevel)
        self.get_domain_keypair(domain_id)

        workingdir = self.config.get_config()['workingdir']
        if domain_id == ZEROS:
            self.domains[domain_id]['data'] = DataHandlerDomain0(self, domain_id=domain_id, logname=self.logname,
                                                                 loglevel=self.loglevel)
            self.domain0manager = Domain0Manager(self, node_id=node_id, logname=self.logname, loglevel=self.loglevel)
        else:
            self.domains[domain_id]['data'] = DataHandler(self, config=conf, workingdir=workingdir,
                                                          domain_id=domain_id, logname=self.logname,
                                                          loglevel=self.loglevel)

        self.domains[domain_id]['repair'] = RepairManager(self, domain_id, workingdir=workingdir,
                                                          logname=self.logname, loglevel=self.loglevel)

        if self.domain0manager is not None:
            self.domain0manager.update_domain_belong_to()
            for dm in self.domains.keys():
                if dm != ZEROS:
                    self.domains[dm]['neighbor'].my_info.update(domain0=True)
            self.domains[domain_id]['topology'].update_refresh_timer_entry(1)
        self.stats.update_stats_increment("network", "num_domains", 1)
        self.logger.info("Domain %s is created" % (domain_id.hex()))
        return True