199 lines
6.7 KiB
C#
199 lines
6.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Drawing;
|
|
using System.Threading.Tasks;
|
|
using Common;
|
|
using JetBrains.Annotations;
|
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|
using TBF.Rig.Generic;
|
|
using TBF.Rig.Network.Camera.CJMS11;
|
|
using TBF.Rig.Network.Camera.RoiForFixedStartCJMS11;
|
|
using TBF.Rig.Network.Camera.RoiForFixedStartCJMS11.common;
|
|
using Factory = TBF.Rig.Network.Camera.CJMS11.Factory;
|
|
|
|
|
|
namespace TBFTests.Rig.Network.Camera.CJMS11
|
|
{
|
|
[TestClass]
|
|
//[Ignore("Excluded from automatic test runs - manual execution only")]
|
|
[TestSubject(typeof(TBF.Rig.Network.Camera.CJMS11.Camera))]
|
|
public class CameraTest
|
|
{
|
|
private static string ipCamera1 = "192.168.0.170";
|
|
private static string ipCamera2 = "192.168.0.129";
|
|
|
|
public string IPCamera1 { get { return ipCamera1; } }
|
|
public string IPCamera2 { get { return ipCamera2; } }
|
|
|
|
private RoiCfg CreateTestRoiCfg()
|
|
{
|
|
var factory = new TBF.Rig.Network.Camera.RoiForFixedStartCJMS11.Factory();
|
|
|
|
var roi = new RoiCfg("TestRoi", factory);
|
|
|
|
roi.BlackAndWhite = false;
|
|
roi.LowResolution = true;
|
|
roi.ImageRotation = ImageRotation.None;
|
|
roi.ImageFrame = Frame.StandardFrame();
|
|
|
|
return roi;
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Initialize()
|
|
{
|
|
TBF.Rig.Network.Camera.CJMS11.Camera camera = GetCamera(IPCamera1);
|
|
camera.RoiConfiguration = CreateTestRoiCfg();
|
|
camera.Initialize();
|
|
|
|
TBF.Rig.Network.Camera.CJMS11.Camera camera2 = GetCamera( IPCamera2);
|
|
camera2.RoiConfiguration = CreateTestRoiCfg();
|
|
camera2.Initialize();
|
|
|
|
// TBF.Rig.Network.Camera.CJMS11.Camera camera11 = GetCamera( IPCamera1);
|
|
// camera11.Initialize();
|
|
//
|
|
// TBF.Rig.Network.Camera.CJMS11.Camera camera12 = GetCamera( IPCamera2);
|
|
// camera12.Initialize();
|
|
|
|
}
|
|
|
|
|
|
|
|
[TestMethod]
|
|
public void Initialize_TwoCamerasInParallel()
|
|
{
|
|
|
|
var task1 = Task.Run(() =>
|
|
{
|
|
var camera = GetCamera(IPCamera1);
|
|
camera.Initialize();
|
|
});
|
|
|
|
var task2 = Task.Run(() =>
|
|
{
|
|
var camera = GetCamera(IPCamera2);
|
|
camera.Initialize();
|
|
});
|
|
|
|
// var task3 = Task.Run(() =>
|
|
// {
|
|
// var camera = GetCamera(IPCamera2);
|
|
// camera.Initialize();
|
|
// });
|
|
//
|
|
// var task4 = Task.Run(() =>
|
|
// {
|
|
// var camera = GetCamera(IPCamera1);
|
|
// camera.Initialize();
|
|
// });
|
|
|
|
Task.WaitAll(task1, task2/*, task3, task4*/); // blocks until both finish
|
|
|
|
// Optionally, add assertions or diagnostics
|
|
Assert.IsTrue(task1.IsCompleted);
|
|
Assert.IsTrue(task2.IsCompleted);
|
|
// Assert.IsTrue(task3.IsCompleted);
|
|
// Assert.IsTrue(task4.IsCompleted);
|
|
|
|
}
|
|
|
|
[TestMethod]
|
|
public async Task Initialize_TwoCamerasInParallelAsync()
|
|
{
|
|
|
|
var task1 = Task.Run(() =>
|
|
{
|
|
var camera = GetCamera(IPCamera1);
|
|
camera.Initialize();
|
|
});
|
|
|
|
var task2 = Task.Run(() =>
|
|
{
|
|
var camera = GetCamera(IPCamera2);
|
|
camera.Initialize();
|
|
});
|
|
|
|
await Task.WhenAll(task1, task2); // blocks until both finish
|
|
|
|
// Optionally, add assertions or diagnostics
|
|
Assert.IsTrue(task1.IsCompleted);
|
|
Assert.IsTrue(task2.IsCompleted);
|
|
|
|
}
|
|
|
|
[TestMethod]
|
|
public async Task GrabImageTest()
|
|
{
|
|
|
|
var task1 = Task.Run(() =>
|
|
{
|
|
var camera = GetCamera(IPCamera1);
|
|
|
|
|
|
Task<Image> saveImageTask = Task.Run(() => camera.SaveImageListenerAsynch());
|
|
var timeoutAnswerTask = Task.Delay(TimeSpan.FromSeconds(3));
|
|
var completedAnswerTask = Task.WhenAny(saveImageTask, timeoutAnswerTask).Result;
|
|
if (completedAnswerTask == timeoutAnswerTask)
|
|
{
|
|
Assert.Fail();
|
|
}
|
|
|
|
//Assert.IsTrue(saveImageTask.Result != null);
|
|
});
|
|
|
|
var task2 = Task.Run(() =>
|
|
{
|
|
var camera = GetCamera(IPCamera2);
|
|
camera.Initialize();
|
|
});
|
|
|
|
// var task3 = Task.Run(() =>
|
|
// {
|
|
// var camera = GetCamera(IPCamera2);
|
|
//
|
|
// Task<Image> saveImageTask = Task.Run(() => camera.SaveImageListenerAsynch());
|
|
// var timeoutAnswerTask = Task.Delay(TimeSpan.FromSeconds(3));
|
|
// var completedAnswerTask = Task.WhenAny(saveImageTask, timeoutAnswerTask).Result;
|
|
// if (completedAnswerTask == timeoutAnswerTask)
|
|
// {
|
|
// Assert.Fail();
|
|
// }
|
|
//
|
|
// //TODO BUMI enable check image
|
|
// //Assert.IsTrue(saveImageTask.Result != null);
|
|
// });
|
|
//
|
|
// var task4 = Task.Run(() =>
|
|
// {
|
|
// var camera = GetCamera(IPCamera1);
|
|
// camera.Initialize();
|
|
// });
|
|
|
|
await Task.WhenAll(task1, task2/*,task3, task4*/); // blocks until both finish
|
|
|
|
// Optionally, add assertions or diagnostics
|
|
Assert.IsTrue(task1.IsCompleted);
|
|
Assert.IsTrue(task2.IsCompleted);
|
|
// Assert.IsTrue(task3.IsCompleted);
|
|
// Assert.IsTrue(task4.IsCompleted);
|
|
|
|
}
|
|
|
|
private TBF.Rig.Network.Camera.CJMS11.Camera GetCamera(string ip)
|
|
{
|
|
Factory factory = new Factory();
|
|
CameraCfg config = new CameraCfg("CameraJMS", factory);
|
|
config.IPAddressCJMS = ip;
|
|
|
|
TBF.Rig.Network.Adapter.Factory factoryNetadapter = new TBF.Rig.Network.Adapter.Factory();
|
|
IComponentCfg configNetadapter = new TBF.Rig.Network.Adapter.NetadapterCfg("Network.Adapter", factoryNetadapter);
|
|
|
|
IList<IComponent> components = new List<IComponent>();
|
|
IComponent netAdapter = factoryNetadapter.GetComponent(configNetadapter, null);
|
|
components.Add(netAdapter);
|
|
|
|
return new TBF.Rig.Network.Camera.CJMS11.Camera(config, components);
|
|
}
|
|
}
|
|
} |