run loop for generation
parent
96d22098df
commit
b9edd23af1
|
@ -122,7 +122,7 @@ int main(int argc, const char **argv)
|
||||||
return_value = generation(hex_string, rand_offset, rand_flip);
|
return_value = generation(hex_string, rand_offset, rand_flip);
|
||||||
if (return_value)
|
if (return_value)
|
||||||
{
|
{
|
||||||
exit(1);
|
exit(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
48
run.py
48
run.py
|
@ -12,10 +12,6 @@ class Sins():
|
||||||
logger = logging.getLogger()
|
logger = logging.getLogger()
|
||||||
|
|
||||||
def __init__(self, parent, seed=None, run_dir=None):
|
def __init__(self, parent, seed=None, run_dir=None):
|
||||||
self.logger.info('run: {}'.format((
|
|
||||||
(parent, seed, run_dir))
|
|
||||||
))
|
|
||||||
|
|
||||||
self.parent = os.path.abspath(parent)
|
self.parent = os.path.abspath(parent)
|
||||||
if not os.path.isfile(parent):
|
if not os.path.isfile(parent):
|
||||||
raise ValueError('Invalid executable image path.')
|
raise ValueError('Invalid executable image path.')
|
||||||
|
@ -32,31 +28,22 @@ class Sins():
|
||||||
|
|
||||||
shutil.copy2(self.seed, self.run_dir)
|
shutil.copy2(self.seed, self.run_dir)
|
||||||
|
|
||||||
parsed = self.parent, self.seed, self.run_dir
|
parsed = (self.parent, self.seed, self.run_dir)
|
||||||
self.logger.info('parsed\n {}'.format((parsed)))
|
self.logger.info('init path: {}'.format(parsed))
|
||||||
|
|
||||||
paths = (self.seed)
|
paths = (self.seed,)
|
||||||
while True:
|
while True:
|
||||||
for path in paths:
|
for path in paths:
|
||||||
scrap_path = os.path.join(self.run_dir, path)
|
scrap_path = os.path.join(self.run_dir, path)
|
||||||
if os.path.isfile(scrap_path):
|
if os.path.isfile(scrap_path):
|
||||||
with open(scrap_path, 'rb') as scrap_file:
|
|
||||||
scrap_bin = scrap_file.read()
|
|
||||||
|
|
||||||
scrap_hex = binascii.b2a_hex(scrap_bin).upper()
|
|
||||||
|
|
||||||
child = self.generation(
|
child = self.generation(
|
||||||
self.parent,
|
self.parent,
|
||||||
scrap_hex,
|
scrap_path,
|
||||||
str(random.randint(0, len(scrap_hex))),
|
|
||||||
str(random.randint(0, 255)),
|
|
||||||
self.run_dir
|
self.run_dir
|
||||||
)
|
)
|
||||||
|
|
||||||
if child:
|
if child:
|
||||||
raise Exception(child)
|
print(child)
|
||||||
|
# paths = sorted(os.listdir(self.run_dir))
|
||||||
paths = sorted(os.listdir(self.run_dir))
|
|
||||||
|
|
||||||
def scrap_recent(self, run_dir):
|
def scrap_recent(self, run_dir):
|
||||||
scraps = sorted(os.listdir(run_dir))
|
scraps = sorted(os.listdir(run_dir))
|
||||||
|
@ -66,18 +53,27 @@ class Sins():
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def generation(self, parent, scrap, offset, flip, cwd):
|
def generation(self, parent, scrap, cwd):
|
||||||
|
with open(scrap, 'rb') as scrap_file:
|
||||||
|
scrap_bin = scrap_file.read()
|
||||||
|
|
||||||
|
scrap_hex = binascii.b2a_hex(scrap_bin).upper()
|
||||||
|
offset = random.randint(0, len(scrap_hex))
|
||||||
|
flip = random.randint(0, 255)
|
||||||
|
|
||||||
self.logger.debug(
|
self.logger.debug(
|
||||||
'generation: {}'.format((parent, scrap, offset, flip, cwd))
|
'generation: {}'.format((parent, scrap_hex, offset, flip, cwd))
|
||||||
)
|
)
|
||||||
|
|
||||||
proc = subprocess.run(
|
proc = subprocess.run(
|
||||||
[parent, scrap, offset, flip],
|
[parent, scrap_hex, str(offset), str(flip)],
|
||||||
cwd=cwd,
|
cwd=cwd,
|
||||||
stdout=subprocess.PIPE
|
stdout=subprocess.PIPE
|
||||||
)
|
)
|
||||||
children = proc.stdout
|
|
||||||
return children
|
if proc.stdout:
|
||||||
|
child_hex = binascii.a2b_hex(proc.stdout)
|
||||||
|
return child_hex
|
||||||
|
|
||||||
|
|
||||||
def hex_dumps(scrap_dir):
|
def hex_dumps(scrap_dir):
|
||||||
|
@ -127,7 +123,7 @@ if __name__ == '__main__':
|
||||||
|
|
||||||
logger = logging.getLogger()
|
logger = logging.getLogger()
|
||||||
formatter = logging.Formatter(
|
formatter = logging.Formatter(
|
||||||
'#%(asctime)s %(levelname)s\n##%(message)s\n'
|
'# %(asctime)s %(levelname)s\n%(message)s\n'
|
||||||
)
|
)
|
||||||
|
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
|
@ -146,6 +142,8 @@ if __name__ == '__main__':
|
||||||
logger.setLevel(logging.INFO)
|
logger.setLevel(logging.INFO)
|
||||||
logger.addHandler(stream_handler)
|
logger.addHandler(stream_handler)
|
||||||
|
|
||||||
|
logger.info('run: {}'.format(args))
|
||||||
|
|
||||||
if args.provision:
|
if args.provision:
|
||||||
provision = ['sudo', 'sh', 'provision-ubuntu.sh']
|
provision = ['sudo', 'sh', 'provision-ubuntu.sh']
|
||||||
prov_proc = subprocess.run(provision)
|
prov_proc = subprocess.run(provision)
|
||||||
|
|
Loading…
Reference in New Issue