device: add tests for IsRunning

To check that the IsRunning method is working, some tests are needed. These tests shall be skipped when an AVdevice is not connected, such as when testing within Circle-CI.
This commit is contained in:
Scott 2020-01-30 11:21:06 +10:30
parent 9a0e52a8f3
commit f1d1fe2cad
5 changed files with 300 additions and 1 deletions

View File

@ -4,9 +4,10 @@ NAME
AUTHOR AUTHOR
Trek Hopton <trek@ausocean.org> Trek Hopton <trek@ausocean.org>
Scott Barnard <scott@ausocean.org>
LICENSE LICENSE
This file is Copyright (C) 2019 the Australian Ocean Lab (AusOcean) This file is Copyright (C) 2019-2020 the Australian Ocean Lab (AusOcean)
It is free software: you can redistribute it and/or modify them It is free software: you can redistribute it and/or modify them
under the terms of the GNU General Public License as published by the under the terms of the GNU General Public License as published by the
@ -25,6 +26,7 @@ LICENSE
package alsa package alsa
import ( import (
"bytes"
"io/ioutil" "io/ioutil"
"os" "os"
"strconv" "strconv"
@ -106,3 +108,38 @@ func TestNearestPowerOfTwo(t *testing.T) {
}) })
} }
} }
func TestIsRunning(t *testing.T) {
l := logger.New(logger.Debug, &bytes.Buffer{}, true) // Discard logs.
d := New(l)
var err error
err = d.Set(config.Config{
SampleRate: 1000,
Channels: 1,
BitDepth: 16,
RecPeriod: 1,
InputCodec: codecutil.ADPCM,
})
if err != nil {
t.Skipf("could not set device: %w", err)
}
err = d.Start()
if err != nil {
t.Skipf("could not start device %w", err)
}
time.Sleep(250 * time.Millisecond)
if !d.IsRunning() {
t.Error("device isn't running, when it should be")
}
err = d.Stop()
if err != nil {
t.Error(err.Error())
}
time.Sleep(250 * time.Millisecond)
if d.IsRunning() {
t.Error("device is running, when it should not be")
}
}

62
device/file/file_test.go Normal file
View File

@ -0,0 +1,62 @@
/*
DESCRIPTION
file_test.go tests the file AVDevice.
AUTHORS
Scott Barnard <scott@ausocean.org>
LICENSE
Copyright (C) 2020 the Australian Ocean Lab (AusOcean)
It is free software: you can redistribute it and/or modify them
under the terms of the GNU General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your
option) any later version.
It is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
in gpl.txt. If not, see http://www.gnu.org/licenses.
*/
package file
import (
"testing"
"time"
"bitbucket.org/ausocean/av/revid/config"
)
func TestIsRunning(t *testing.T) {
d := New()
var err error
d.Set(config.Config{
InputPath: "../../../test/test-data/av/input/motion-detection/mjpeg/school.mjpeg",
})
if err != nil {
t.Skipf("could not set device: %w", err)
}
err = d.Start()
if err != nil {
t.Skipf("could not start device %w", err)
}
time.Sleep(250 * time.Millisecond)
if !d.IsRunning() {
t.Error("device isn't running, when it should be")
}
err = d.Stop()
if err != nil {
t.Error(err.Error())
}
time.Sleep(250 * time.Millisecond)
if d.IsRunning() {
t.Error("device is running, when it should not be")
}
}

View File

@ -0,0 +1,68 @@
/*
DESCRIPTION
geovision_test.go tests the geovision AVDevice.
AUTHORS
Scott Barnard <scott@ausocean.org>
LICENSE
Copyright (C) 2020 the Australian Ocean Lab (AusOcean)
It is free software: you can redistribute it and/or modify them
under the terms of the GNU General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your
option) any later version.
It is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
in gpl.txt. If not, see http://www.gnu.org/licenses.
*/
package geovision
import (
"bytes"
"testing"
"time"
"bitbucket.org/ausocean/av/codec/codecutil"
"bitbucket.org/ausocean/av/revid/config"
"bitbucket.org/ausocean/utils/logger"
)
func TestIsRunning(t *testing.T) {
l := logger.New(logger.Debug, &bytes.Buffer{}, true) // Discard logs.
d := New(l)
var err error
d.Set(config.Config{
Logger: l,
InputCodec: codecutil.H264,
CameraIP: "192.168.4.20",
})
if err != nil {
t.Skipf("could not set device: %w", err)
}
err = d.Start()
if err != nil {
t.Skipf("could not start device %w", err)
}
time.Sleep(50 * time.Millisecond)
if !d.IsRunning() {
t.Error("device isn't running, when it should be")
}
err = d.Stop()
if err != nil {
t.Error(err.Error())
}
time.Sleep(50 * time.Millisecond)
if d.IsRunning() {
t.Error("device is running, when it should not be")
}
}

View File

@ -0,0 +1,66 @@
/*
DESCRIPTION
raspivid_test.go tests the raspivid AVDevice.
AUTHORS
Scott Barnard <scott@ausocean.org>
LICENSE
Copyright (C) 2020 the Australian Ocean Lab (AusOcean)
It is free software: you can redistribute it and/or modify them
under the terms of the GNU General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your
option) any later version.
It is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
in gpl.txt. If not, see http://www.gnu.org/licenses.
*/
package raspivid
import (
"bytes"
"testing"
"time"
"bitbucket.org/ausocean/av/codec/codecutil"
"bitbucket.org/ausocean/av/revid/config"
"bitbucket.org/ausocean/utils/logger"
)
func TestIsRunning(t *testing.T) {
l := logger.New(logger.Debug, &bytes.Buffer{}, true) // Discard logs.
d := New(l)
var err error
d.Set(config.Config{
Logger: l,
InputCodec: codecutil.H264,
})
if err != nil {
t.Skipf("could not set device: %w", err)
}
err = d.Start()
if err != nil {
t.Skipf("could not start device %w", err)
}
time.Sleep(250 * time.Millisecond)
if !d.IsRunning() {
t.Error("device isn't running, when it should be")
}
err = d.Stop()
if err != nil {
t.Error(err.Error())
}
time.Sleep(250 * time.Millisecond)
if d.IsRunning() {
t.Error("device is running, when it should not be")
}
}

View File

@ -0,0 +1,66 @@
/*
DESCRIPTION
webcam_test.go tests the webcam AVDevice.
AUTHORS
Scott Barnard <scott@ausocean.org>
LICENSE
Copyright (C) 2020 the Australian Ocean Lab (AusOcean)
It is free software: you can redistribute it and/or modify them
under the terms of the GNU General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your
option) any later version.
It is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
in gpl.txt. If not, see http://www.gnu.org/licenses.
*/
package webcam
import (
"bytes"
"testing"
"time"
"bitbucket.org/ausocean/av/codec/codecutil"
"bitbucket.org/ausocean/av/revid/config"
"bitbucket.org/ausocean/utils/logger"
)
func TestIsRunning(t *testing.T) {
l := logger.New(logger.Debug, &bytes.Buffer{}, true) // Discard logs.
d := New(l)
var err error
d.Set(config.Config{
Logger: l,
InputCodec: codecutil.H264,
})
if err != nil {
t.Skipf("could not set device: %w", err)
}
err = d.Start()
if err != nil {
t.Skipf("could not start device %w", err)
}
time.Sleep(250 * time.Millisecond)
if !d.IsRunning() {
t.Error("device isn't running, when it should be")
}
err = d.Stop()
if err != nil {
t.Error(err.Error())
}
time.Sleep(250 * time.Millisecond)
if d.IsRunning() {
t.Error("device is running, when it should not be")
}
}