summaryrefslogtreecommitdiff
path: root/test/media_device/media_device_test.cpp
diff options
context:
space:
mode:
authorJacopo Mondi <jacopo@jmondi.org>2019-01-11 09:59:03 +0100
committerJacopo Mondi <jacopo@jmondi.org>2019-01-14 17:54:56 +0100
commitd85767a8c82df0ad8530800172d7bae4f837d6d8 (patch)
treeaff93b1c9a5e980f218ce749031c0c6ffb77d2f6 /test/media_device/media_device_test.cpp
parent4bf28fa225f6ef36e51e0dd12de8432b98137c51 (diff)
test: media_device: Make MediaDeviceTest a MediaDevicePrintTest
As a new class for test link handling will be added as a separate test, it makes no sense to have a generic "MediaDeviceTest" class. Rename it in "MediaDevicePrintTest", and make it run only printing test. Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
Diffstat (limited to 'test/media_device/media_device_test.cpp')
-rw-r--r--test/media_device/media_device_test.cpp174
1 files changed, 0 insertions, 174 deletions
diff --git a/test/media_device/media_device_test.cpp b/test/media_device/media_device_test.cpp
deleted file mode 100644
index c482b2e1..00000000
--- a/test/media_device/media_device_test.cpp
+++ /dev/null
@@ -1,174 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-or-later */
-/*
- * Copyright (C) 2018, Google Inc.
- *
- * media_device_test.cpp - Tests for the media device class.
- *
- * Test library for the media device class.
- */
-#include <iostream>
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-
-#include "media_device.h"
-
-#include "test.h"
-
-using namespace libcamera;
-using namespace std;
-
-/*
- * MediaDeviceTest object: runs a sequence of tests on all media
- * devices found in the system.
- *
- * If no accessible media device is found, the test is skipped.
- */
-class MediaDeviceTest : public Test
-{
-public:
- MediaDeviceTest() { }
- ~MediaDeviceTest() { }
-
-protected:
- int init() { return 0; }
- int run();
- void cleanup() { }
-
-private:
- int testMediaDevice(string devnode);
-
- void printMediaGraph(const MediaDevice &media, ostream &os);
- void printLinkFlags(const MediaLink *link, ostream &os);
- void printNode(const MediaPad *pad, ostream &os);
-};
-
-void MediaDeviceTest::printNode(const MediaPad *pad, ostream &os)
-{
- const MediaEntity *entity = pad->entity();
-
- os << "\"" << entity->name() << "\"["
- << pad->index() << "]";
-}
-
-void MediaDeviceTest::printLinkFlags(const MediaLink *link, ostream &os)
-{
- unsigned int flags = link->flags();
-
- os << " [";
- if (flags) {
- os << (flags & MEDIA_LNK_FL_ENABLED ? "ENABLED," : "")
- << (flags & MEDIA_LNK_FL_IMMUTABLE ? "IMMUTABLE" : "");
- }
- os << "]\n";
-}
-
-/*
- * For each entity in the media graph, printout links directed to its sinks
- * and source pads.
- */
-void MediaDeviceTest::printMediaGraph(const MediaDevice &media, ostream &os)
-{
- os << "\n" << media.driver() << " - " << media.devnode() << "\n\n";
-
- for (auto const &entity : media.entities()) {
- os << "\"" << entity->name() << "\"\n";
-
- for (auto const &sink : entity->pads()) {
- if (!(sink->flags() & MEDIA_PAD_FL_SINK))
- continue;
-
- os << " [" << sink->index() << "]" << ": Sink\n";
- for (auto const &link : sink->links()) {
- os << "\t";
- printNode(sink, os);
- os << " <- ";
- printNode(link->source(), os);
- printLinkFlags(link, os);
- }
- os << "\n";
- }
-
- for (auto const &source : entity->pads()) {
- if (!(source->flags() & MEDIA_PAD_FL_SOURCE))
- continue;
-
- os << " [" << source->index() << "]" << ": Source\n";
- for (auto const &link : source->links()) {
- os << "\t";
- printNode(source, os);
- os << " -> ";
- printNode(link->sink(), os);
- printLinkFlags(link, os);
- }
- os << "\n";
- }
- }
-
- os.flush();
-}
-
-/* Test a single media device. */
-int MediaDeviceTest::testMediaDevice(const string devnode)
-{
- MediaDevice dev(devnode);
- int ret;
-
- /* Fuzzy open/close sequence. */
- ret = dev.open();
- if (ret)
- return ret;
-
- ret = dev.open();
- if (!ret)
- return ret;
-
- dev.close();
-
- ret = dev.open();
- if (ret)
- return ret;
-
- ret = dev.populate();
- if (ret)
- return ret;
-
- /* Run tests in sequence. */
- printMediaGraph(dev, cerr);
- /* TODO: add more tests here. */
-
- dev.close();
-
- return 0;
-}
-
-/* Run tests on all media devices. */
-#define MAX_MEDIA_DEV 256
-int MediaDeviceTest::run()
-{
- const string devnode("/dev/media");
- unsigned int i;
- int ret = 77; /* skip test exit code */
-
- /*
- * Run the test sequence on all media device found in the
- * system, if any.
- */
- for (i = 0; i < MAX_MEDIA_DEV; i++) {
- string mediadev = devnode + to_string(i);
- struct stat pstat = { };
-
- if (stat(mediadev.c_str(), &pstat))
- continue;
-
- ret = testMediaDevice(mediadev);
- if (ret)
- return ret;
-
- }
-
- return ret;
-}
-
-TEST_REGISTER(MediaDeviceTest);