|
@ -4,7 +4,6 @@ import ( |
|
|
"fmt" |
|
|
"fmt" |
|
|
"leit.com/aps_engine/service" |
|
|
"leit.com/aps_engine/service" |
|
|
"testing" |
|
|
"testing" |
|
|
"time" |
|
|
|
|
|
) |
|
|
) |
|
|
|
|
|
|
|
|
func TestScheduler(t *testing.T){ |
|
|
func TestScheduler(t *testing.T){ |
|
@ -31,92 +30,3 @@ func TestScheduler(t *testing.T){ |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
func TestSchedulerManually(t *testing.T){ |
|
|
|
|
|
var( |
|
|
|
|
|
et service.SchedEvent |
|
|
|
|
|
wpe service.WorkPlaceEvent |
|
|
|
|
|
opE service.OperationEvent |
|
|
|
|
|
toolE service.ToolEvent |
|
|
|
|
|
) |
|
|
|
|
|
// 初始化调度队列
|
|
|
|
|
|
schedqueue := service.NewSchedQueue() |
|
|
|
|
|
|
|
|
|
|
|
// 加载可执行事件
|
|
|
|
|
|
wpe = service.WorkPlaceEvent{Event:service.EVENT_WP_STATUS_UNAVAIL, EventType: service.EVENT_OBJ_WP, TriggerTime: time.Now()} |
|
|
|
|
|
et = service.SchedEvent(wpe) |
|
|
|
|
|
schedqueue.Insert(et) |
|
|
|
|
|
fmt.Println("插入设备事件1 = ", et) |
|
|
|
|
|
|
|
|
|
|
|
wpe = service.WorkPlaceEvent{Event:service.EVENT_WP_STATUS_AVAIL, EventType: service.EVENT_OBJ_WP, TriggerTime: time.Now().Add(time.Duration(20*time.Second))} |
|
|
|
|
|
et = service.SchedEvent(wpe) |
|
|
|
|
|
schedqueue.Insert(et) |
|
|
|
|
|
fmt.Println("插入设备事件2 = ", et) |
|
|
|
|
|
|
|
|
|
|
|
fmt.Println("---------------------------------------------") |
|
|
|
|
|
// 从队列循环获取任务执行,直至队列为空
|
|
|
|
|
|
for schedqueue.Length() > 0 { |
|
|
|
|
|
fmt.Println("1. 队列长度 = ",schedqueue.Length()) |
|
|
|
|
|
et = schedqueue.Pop() |
|
|
|
|
|
|
|
|
|
|
|
switch et.GetEvent() { |
|
|
|
|
|
case service.EVENT_TASK_SETUPBEG: |
|
|
|
|
|
case service.EVENT_TASK_SETUPEND: |
|
|
|
|
|
case service.EVENT_TASK_PLANBEG: |
|
|
|
|
|
fmt.Println("任务计划开始事件触发,时间点:",et.GetEventTime()) |
|
|
|
|
|
toolE = service.ToolEvent{Event:service.EVENT_WP_STATUS_UNAVAIL, EventType: service.EVENT_OBJ_TOOL, TriggerTime: et.GetEventTime().Add(time.Duration(20*time.Second))} |
|
|
|
|
|
et = service.SchedEvent(toolE) |
|
|
|
|
|
schedqueue.Insert(et) |
|
|
|
|
|
case service.EVENT_TASK_PLANEND: |
|
|
|
|
|
case service.EVENT_TASK_POSTBEG: |
|
|
|
|
|
case service.EVENT_TASK_POSTEND: |
|
|
|
|
|
case service.EVENT_WP_STATUS_AVAIL: |
|
|
|
|
|
// 获取事件对象
|
|
|
|
|
|
wpe = et.(service.WorkPlaceEvent) |
|
|
|
|
|
fmt.Println("资源状态可用事件触发,时间点:",et.GetEventTime()) |
|
|
|
|
|
opE = service.OperationEvent{Event:service.EVENT_TASK_PLANBEG, EventType: service.EVENT_OBJ_OPTASK, TriggerTime: et.GetEventTime().Add(time.Duration(20*time.Second))} |
|
|
|
|
|
et = service.SchedEvent(opE) |
|
|
|
|
|
schedqueue.Insert(et) |
|
|
|
|
|
case service.EVENT_WP_STATUS_UNAVAIL: |
|
|
|
|
|
fmt.Println("资源状态不可用事件触发,时间点:",et.GetEventTime()) |
|
|
|
|
|
case service.EVENT_TOOL_STATUS_AVAIL: |
|
|
|
|
|
|
|
|
|
|
|
case service.EVENT_TOOL_STATUS_UNAVAIL: |
|
|
|
|
|
|
|
|
|
|
|
case service.EVENT_PERSON_STATUS_AVAIL: |
|
|
|
|
|
|
|
|
|
|
|
case service.EVENT_PERSON_STATUS_UNAVAIL: |
|
|
|
|
|
|
|
|
|
|
|
case service.EVENT_ART_CONSUME: |
|
|
|
|
|
|
|
|
|
|
|
case service.EVENT_ART_PRODUCE: |
|
|
|
|
|
|
|
|
|
|
|
case service.EVENT_QTYRES_CONSUME: |
|
|
|
|
|
|
|
|
|
|
|
case service.EVENT_QTYRES_PRODUCE: |
|
|
|
|
|
|
|
|
|
|
|
case service.EVENT_STATUSRES_AVAIL: |
|
|
|
|
|
|
|
|
|
|
|
case service.EVENT_STATUSRES_UNAVAIL: |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 事件队列为空则返回
|
|
|
|
|
|
return |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func TestPointer(t *testing.T){ |
|
|
|
|
|
var( |
|
|
|
|
|
order service.OrderSrv |
|
|
|
|
|
ord1, ord2 *service.OrderSrv |
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
ord1 = &service.OrderSrv{OrderId: "10001"} |
|
|
|
|
|
ord1.OrderId = "LEO" |
|
|
|
|
|
fmt.Println(order.OrderId) |
|
|
|
|
|
ord2 = &service.OrderSrv{OrderId: "10002"} |
|
|
|
|
|
ord2.OrderId = "Sarah" |
|
|
|
|
|
ord1.OrderId = "LEOSARAH" |
|
|
|
|
|
fmt.Println(ord1.OrderId) |
|
|
|
|
|
fmt.Println(ord2.OrderId) |
|
|
|
|
|
} |
|
|
|