/* streamer-tools OBS Camera Plugin - LiveKit SDK link smoke test Copyright (C) 2026 CyberCoveLLC This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program 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 along with this program. If not, see */ // Proves the pinned client-sdk-cpp release is genuinely linked and callable: // the SDK's own global init/shutdown runs in-process without crashing, and // the header-reported build version matches the version CMake pinned. // // This does NOT touch the network -- livekit::initialize() only sets up // global SDK state and log routing. #include #include #include #include #include #include "test_util.h" int main() { // The pin CMake resolved is passed in as a define; the SDK's own // generated build.h reports what was actually unpacked. A mismatch means // a stale extracted SDK directory is being reused. ST_ASSERT_EQ(std::string(LIVEKIT_BUILD_VERSION), std::string(STPLUGIN_EXPECTED_LIVEKIT_VERSION)); // initialize() returns true when this call performed the init, false if // the SDK was already initialized. Either way it must not crash, and a // second call must report "already initialized". bool first = livekit::initialize(livekit::LogLevel::Error); ST_ASSERT(first); bool second = livekit::initialize(livekit::LogLevel::Error); ST_ASSERT(!second); // Log level round-trips through the SDK's global state. livekit::setLogLevel(livekit::LogLevel::Warn); ST_ASSERT(livekit::getLogLevel() == livekit::LogLevel::Warn); livekit::shutdown(); // The SDK documents that initialize() may be called again after // shutdown(); exercise that so a half-torn-down global state would show // up here rather than in OBS. ST_ASSERT(livekit::initialize(livekit::LogLevel::Error)); livekit::shutdown(); return st_test_report("livekit_smoke"); }