TEST_F(ProxyTest, CanHandleRemoteAttributeFromParentInterface) {
    registerExtendedStub();

    auto extendedProxy = runtime_->buildProxy<VERSION::commonapi::tests::ExtendedInterfaceProxy>(domain, commonApiAddressExtended);

    for (uint32_t i = 0; !extendedProxy->isAvailable() && i < 200; ++i) {
        usleep(20 * 1000);
    }
    ASSERT_TRUE(extendedProxy->isAvailable());

    CommonAPI::CallStatus callStatus(CommonAPI::CallStatus::REMOTE_ERROR);
    uint32_t value;

    usleep(50000);
    
    auto& testAttribute = extendedProxy->getTestPredefinedTypeAttributeAttribute();

    testAttribute.getValue(callStatus, value);

    EXPECT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);

    value = 7;
    uint32_t responseValue;
    testAttribute.setValue(value, callStatus, responseValue);

    EXPECT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
    EXPECT_EQ(value, responseValue);
    
    usleep(50000);
    deregisterExtendedStub();
}
TEST_F(DBusCommunicationTest, AccessStubAdapterAfterInitialised) {
    auto stub = std::make_shared<VERSION::commonapi::tests::TestInterfaceStubDefault>();
    interface_ = stub->getStubAdapter()->getInterface();
    bool serviceRegistered = runtime_->registerService(domain_, serviceAddress_, stub, "connection");

    unsigned int in = 5;
    stub->setTestPredefinedTypeAttributeAttribute(in);

    for (unsigned int i = 0; !serviceRegistered && i < 100; i++) {
        if (!serviceRegistered) {
            serviceRegistered = runtime_->registerService(domain_, serviceAddress_, stub, "connection");
        }
        usleep(10000);
    }
    ASSERT_TRUE(serviceRegistered);
    ASSERT_EQ(in, stub->getTestPredefinedTypeAttributeAttribute());
}
const uint32_t& TestInterfaceStubDefault::getTestPredefinedTypeAttributeAttribute(const std::shared_ptr<CommonAPI::ClientId> clientId) {
    return getTestPredefinedTypeAttributeAttribute();
}