Example #1
0
    void assertPutFileRequest(const Poco::Net::HTTPRequest& request) override
    {
        if (_savingPhase == SavingPhase::Unmodified)
        {
            // the document is not modified
            CPPUNIT_ASSERT_EQUAL(std::string("false"), request.get("X-LOOL-WOPI-IsModifiedByUser"));

            // but the save action is an explicit user's request
            CPPUNIT_ASSERT_EQUAL(std::string("false"), request.get("X-LOOL-WOPI-IsAutosave"));

            _finishedSaveUnmodified = true;
        }
        else if (_savingPhase == SavingPhase::Modified)
        {
            // the document is modified
            CPPUNIT_ASSERT_EQUAL(std::string("true"), request.get("X-LOOL-WOPI-IsModifiedByUser"));

            // and this test fakes that it's an autosave
            CPPUNIT_ASSERT_EQUAL(std::string("true"), request.get("X-LOOL-WOPI-IsAutosave"));

            _finishedSaveModified = true;
        }

        if (_finishedSaveUnmodified && _finishedSaveModified)
            exitTest(TestResult::Ok);
    }
Example #2
0
    virtual void newChild(const std::shared_ptr<Poco::Net::WebSocket> &socket) override
    {
        _childSockets.push_back(socket);
        if (_childSockets.size() > NumToPrefork)
        {
            Poco::Timestamp::TimeDiff elapsed = _startTime.elapsed();

            auto totalTime = (1000. * elapsed)/Poco::Timestamp::resolution();
            Log::info() << "Launched " << _childSockets.size() << " in "
                        << totalTime << Log::end;
            size_t totalPSSKb = 0;
            size_t totalDirtyKb = 0;
            // Skip the last one as it's not completely initialized yet.
            for (size_t i = 0; i < _childSockets.size() - 1; ++i)
            {
                Log::info() << "Getting memory of child #" << i + 1 << " of " << _childSockets.size() << Log::end;
                if (!getMemory(_childSockets[i], totalPSSKb, totalDirtyKb))
                {
                    exitTest(TestResult::TEST_FAILED);
                    return;
                }
            }

            Log::info() << "Memory use total   " << totalPSSKb << "k shared "
                        << totalDirtyKb << "k dirty" << Log::end;

            totalPSSKb /= _childSockets.size();
            totalDirtyKb /= _childSockets.size();
            Log::info() << "Memory use average " << totalPSSKb << "k shared "
                        << totalDirtyKb << "k dirty" << Log::end;

            Log::info() << "Launch time total   " << totalTime << " ms" << Log::end;
            totalTime /= _childSockets.size();
            Log::info() << "Launch time average " << totalTime << " ms" << Log::end;

            if (!_failure.empty())
            {
                Log::error("UnitPrefork failed due to: " + _failure);
                exitTest(TestResult::TEST_FAILED);
            }
            else
            {
                Log::error("UnitPrefork success.");
                exitTest(TestResult::TEST_OK);
            }
        }
    }
Example #3
0
    void check()
    {
        if (!_fontsKit.length() || !_fontsBroker.length())
            return; // defer till we have all the data.
        if (_fontsKit != _fontsBroker)
        {
            std::cerr << "Error - font list mismatch" << std::endl;
            std::cerr << "Kit : '" << _fontsKit << "' vs. Broker : '" << _fontsBroker << "'" << std::endl;
            exitTest(TestResult::TEST_FAILED);
        }
        else
        {
            Poco::StringTokenizer tokens(_fontsKit, "\n");
            if (tokens.count() > 0)
                std::cerr << "  " << tokens[0] << std::endl;

            exitTest(TestResult::TEST_OK);
        }
    }
Example #4
0
    virtual void newChild(WebSocketHandler &) override
    {
        _childSockets++;
        LOG_INF("Unit-prefork: got new child, have " << _childSockets << " of " << NumToPrefork);

        if (_childSockets >= NumToPrefork)
        {
            Poco::Timestamp::TimeDiff elapsed = _startTime.elapsed();

            const double totalTime = (1000. * elapsed)/Poco::Timestamp::resolution();
            LOG_INF("Launched " << _childSockets << " in " << totalTime);
            std::cerr << "Launch time total   " << totalTime << " ms" << std::endl;
            std::cerr << "Launch time average " << (totalTime / _childSockets) << " ms" << std::endl;

            exitTest(TestResult::Ok);
        }
    }
    void invokeTest() override
    {
        constexpr char testName[] = "UnitWOPIVersionRestore";

        switch (_phase)
        {
            case Phase::Load:
            {
                initWebsocket("/wopi/files/0?access_token=anything");

                helpers::sendTextFrame(*getWs()->getLOOLWebSocket(), "load url=" + getWopiSrc(), testName);

                _phase = Phase::Modify;
                break;
            }
            case Phase::Modify:
            {
                helpers::sendTextFrame(*getWs()->getLOOLWebSocket(), "key type=input char=97 key=0", testName);
                helpers::sendTextFrame(*getWs()->getLOOLWebSocket(), "key type=up char=0 key=512", testName);

                _phase = Phase::VersionRestoreRequest;
                SocketPoll::wakeupWorld();
                break;
            }
	        case Phase::VersionRestoreRequest:
            {
                // tell wsd that we are about to restore
                helpers::sendTextFrame(*getWs()->getLOOLWebSocket(), "versionrestore prerestore", testName);
                _phase = Phase::Polling;
                break;
            }
	        case Phase::VersionRestoreAck:
            {
                if (_isDocumentSaved)
                    exitTest(TestResult::Ok);

                break;
            }
            case Phase::Polling:
            {
                // just wait for the results
                break;
            }
        }
    }