import os, hashlib, time, numpy, sys
name = 'sleepy'
allowed_chars = 'abcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ'
def hashid(n):
m = hashlib.sha1()
m.update(str(n).encode('utf-8'))
name = ''
for i in m.digest()[:24]:
name += allowed_chars[i % len(allowed_chars)]
return name+('_%d' % n)
def hash_integer(n):
m = hashlib.sha1()
m.update(str(n))
name = 0
for i in m.digest()[:8]:
name = name*256 + ord(i)
return name
def open_and_gitadd(fname):
f = open(fname, 'w')
assert(not os.system('git add '+fname))
return f
def create_bench(n):
longsleep = max((n-9)//3, 0)
shortsleep = 1
if longsleep == 0:
shortsleep = 0
final_indices = range(1,n+1,3)
long_indices = [final_indices[0],
final_indices[(n//8) % len(final_indices)],
final_indices[(n//4) % len(final_indices)]]
finalfiles = [hashid(i)+'.txt' for i in final_indices]
sconsf = open_and_gitadd('SConstruct')
facf = open_and_gitadd('top.fac')
open_and_gitadd('Tupfile.ini')
sconsf.write("""
env = Environment()
env.Command('final.txt', ['%s'], 'sleep 1 && cat $SOURCE > $TARGET')
""" % ("', '".join(finalfiles)))
facf.write("""
| cat %s > final.txt
> final.txt
< %s
""" % (' '.join(finalfiles), "\n< ".join(finalfiles)))
for i in final_indices:
sleepiness = shortsleep
if i in long_indices:
sleepiness = longsleep
facf.write("""
| sleep %d && cat %s.txt > %s.txt
< %s.txt
> %s.txt
| sleep %d && cat %s.txt > %s.txt
< %s.txt
> %s.txt
| sleep %d && echo %s > %s.txt
> %s.txt
""" % (sleepiness, hashid(i+1), hashid(i), hashid(i+1), hashid(i),
sleepiness, hashid(i+2), hashid(i+1), hashid(i+2), hashid(i+1),
sleepiness, hashid(i), hashid(i+2), hashid(i+2)))
sconsf.write("""
env.Command('%s.txt', '%s.txt', 'sleep %d && cat $SOURCE > $TARGET')
env.Command('%s.txt', '%s.txt', 'sleep %d && cat $SOURCE > $TARGET')
env.Command('%s.txt', [], 'sleep %d && echo %s > $TARGET')
""" % (hashid(i), hashid(i+1), sleepiness,
hashid(i+1), hashid(i+2), sleepiness,
hashid(i+2), sleepiness, hashid(i)))
verbs = ['building', 'rebuilding']
def prepare():
return {'rebuilding': 'rm -f *.txt'}