Exemple #1
0
def state_machine(request):
    idle = State('Idle')
    a = State('A')
    b = State('B')
    idle.add_transition(Event('EVT1', 'Primer evento'), a)
    a.add_transition(Event('EVT2', 'Segundo evento'), b)
    sm = StateMachine(idle)
    return sm
Exemple #2
0
def test_add_transiction_to_state():
    initial_state = State('Idle')
    target = State('Target')
    event = Event('D1CL', 'Door closed')
    initial_state.add_transition(event, target)
    assert len(initial_state.transitions) == 1
    assert initial_state.transitions[event.code] == target
Exemple #3
0
def main():
    number_of_task = 70
    perf_log = []

    for nb in range(1, 5):

        # Performance measure
        start = time.time()
        print("---------------- Run Beginning ----------------")
        print('number of process launched : ' + str(nb))
        ep = EventProcessor()
        for i in range(number_of_task):
            event = Event.Event('test', 'test')
            ep.add_to_buffer(event)

        ep.run(nb)
        perf = time.time() - start
        print('Run ends in : ' + str(perf) + 's')
        perf_log.append(perf)

    print(perf_log)
    plt.plot(perf_log)
    plt.ylabel('Performance plot')
    plt.show()

    return True
Exemple #4
0
def test_state_machine():
    idle = State('idle')
    active = State('active')
    d1cl = Event('D1CL', 'Door 1 closed')
    idle.add_transition(d1cl, active)
    sm = StateMachine(idle)
    assert sm.start == sm.current_state == idle
    assert sm.all_states() == set([idle, active])
    sm.handle('D1CL')
    assert sm.current_state == active
Exemple #5
0
#!/usr/bin/env python2.7

from core import Dipole, DipolePack, World, Event
import numpy as np
from mayavi import mlab
from tvtk.tools import visual
Qel = 3e-7

d1 = Dipole(np.array([1e-2,1e-3,0.]),np.array([1e-2,0.,0.]),Qel,1e-2,1e-2)
d2 = Dipole(np.array([0.,0.,0.]),np.array([-1e-3,0.,0.]),Qel,1e-2,1e-2)
d3 = Dipole(np.array([-1e-2,2e-3,0.]),np.array([-1e-2,1e-3,0.]),Qel,1e-2,1e-2)
d4 = Dipole(np.array([0.,2e-3,-2e-2]),np.array([0.,3e-3,-2e-2]),Qel,1e-2,1e-2)
d5 = Dipole(np.array([0.,-2e-3,2e-2]),np.array([0.,-3e-3,2e-2]),Qel,1e-2,1e-2)
d6 = Dipole(np.array([-1e-3,-4e-3,3e-2]),np.array([-1e-3,-3e-3,3e-2]),Qel,1e-2,1e-2)

p1 = DipolePack(d1,d2,d3,d4)

w1 = World(200,200,200)

t = 10 # czas symulacji (zycie swiata)
dt = 0.0001 # skok sym.

e1 = Event( t, dt, p1, w1 )
e1.setoutput("output.dat")  

e1.run(True)
Exemple #6
0
 
NaCl = []

# ilosc dipoli w wymiarze
x =  4
y =  4
z =  4  #ilosc warstw

t = d #translacja 
# 1:Na , 2:Cl
for i in range(0,z+1):
	for j in range(0,y+1):
		for k in range(0,x+1):
			if i%2==0:
				if j%2 == 0: NaCl.append(Dipole(   np.array([k*d*2+d+t,j*d*2+t,i*d*2+t])  ,  np.array([k*d*2+t,j*d*2+t,i*d*2+t]) , Q , mNa, mCl  ))
				else:        NaCl.append(Dipole(   np.array([k*d*2+t,j*d*2+t,i*d*2+t])    ,  np.array([k*d*2+d+t,j*d*2+t,i*d*2+t]) , Q , mNa, mCl  ))
			else:
				if j%2 == 0: NaCl.append(Dipole(   np.array([k*d*2+t,j*d*2+t,i*d*2+t])    ,  np.array([k*d*2+d+t,j*d*2+t,i*d*2+t]) , Q , mNa, mCl  ))
				else:        NaCl.append(Dipole(   np.array([k*d*2+d+t,j*d*2+t,i*d*2+t])  ,  np.array([k*d*2+t,j*d*2+t,i*d*2+t]) , Q , mNa, mCl  ))    
p1 = DipolePack(*NaCl)

w1 = World(200,200,200)

time = 10 # czas symulacji (zycie swiata)
dt = 0.0001 # skok sym.

e1 = Event( time, dt, p1, w1 )
e1.setoutput("output.dat")  

e1.run() # True - wizulaizuje, False - bez wizyalizacji
Exemple #7
0
def test_create_event():
    e = Event('D1CL', 'Door closed')
    assert e.code == 'D1CL'
    assert e.name == 'Door closed'
Exemple #8
0
def test_event_as_string():
    e = Event('D1CL', 'Door closed')
    assert str(e) == 'D1CL : Door closed'
#!/usr/bin/env python
# -*- coding: utf-8 -*-

from core import State, Event, NetworkBus, StateMachine

# States

idle = State('idle', 'En espera')
active = State('active', 'Activo')
key1 = State('k1', 'keyboard key 1 pressed')
key2 = State('k2', 'keyboard key 2 pressed')

# Events
door_closed = Event('D1CL', 'Door closed')
key_one_pressed = Event('KEY1', 'Key 1 pressed')
key_two_pressed = Event('KEY2', 'Key 2 pressed')
open_batcave = Event('OPEN', 'Open batcave')

# Transitions
idle.add_transition(door_closed, active)
active.add_transition(key_one_pressed, key1)
key1.add_transition(key_two_pressed, key2)
key2.add_action(open_batcave)
key2.add_transition(open_batcave, idle)

sm = StateMachine(idle)

print('All states:', ', '.join([_.name for _ in sm.all_states()]))

bus = NetworkBus()
bus.subscribe(sm)
Exemple #10
0
 def add_event(self, event_name):
     return self.events.setdefault(event_name, Event(event_name))