Browse Source

run loop for generation

master
JoYo 6 years ago
parent
commit
b9edd23af1
  1. 2
      generation.c
  2. 48
      run.py

2
generation.c

@ -122,7 +122,7 @@ int main(int argc, const char **argv)
return_value = generation(hex_string, rand_offset, rand_flip);
if (return_value)
{
exit(1);
exit(0);
}
}

48
run.py

@ -12,10 +12,6 @@ class Sins():
logger = logging.getLogger()
def __init__(self, parent, seed=None, run_dir=None):
self.logger.info('run: {}'.format((
(parent, seed, run_dir))
))
self.parent = os.path.abspath(parent)
if not os.path.isfile(parent):
raise ValueError('Invalid executable image path.')
@ -32,31 +28,22 @@ class Sins():
shutil.copy2(self.seed, self.run_dir)
parsed = self.parent, self.seed, self.run_dir
self.logger.info('parsed\n {}'.format((parsed)))
parsed = (self.parent, self.seed, self.run_dir)
self.logger.info('init path: {}'.format(parsed))
paths = (self.seed)
paths = (self.seed,)
while True:
for path in paths:
scrap_path = os.path.join(self.run_dir, 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(
self.parent,
scrap_hex,
str(random.randint(0, len(scrap_hex))),
str(random.randint(0, 255)),
scrap_path,
self.run_dir
)
if child:
raise Exception(child)
paths = sorted(os.listdir(self.run_dir))
print(child)
# paths = sorted(os.listdir(self.run_dir))
def scrap_recent(self, run_dir):
scraps = sorted(os.listdir(run_dir))
@ -66,18 +53,27 @@ class Sins():
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(
'generation: {}'.format((parent, scrap, offset, flip, cwd))
'generation: {}'.format((parent, scrap_hex, offset, flip, cwd))
)
proc = subprocess.run(
[parent, scrap, offset, flip],
[parent, scrap_hex, str(offset), str(flip)],
cwd=cwd,
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):
@ -127,7 +123,7 @@ if __name__ == '__main__':
logger = logging.getLogger()
formatter = logging.Formatter(
'#%(asctime)s %(levelname)s\n##%(message)s\n'
'# %(asctime)s %(levelname)s\n%(message)s\n'
)
if args.verbose:
@ -146,6 +142,8 @@ if __name__ == '__main__':
logger.setLevel(logging.INFO)
logger.addHandler(stream_handler)
logger.info('run: {}'.format(args))
if args.provision:
provision = ['sudo', 'sh', 'provision-ubuntu.sh']
prov_proc = subprocess.run(provision)

Loading…
Cancel
Save