summaryrefslogtreecommitdiff
path: root/cpp/test
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/test')
-rw-r--r--cpp/test/Ice/operations/AllTests.cpp15
-rw-r--r--cpp/test/Ice/operations/Client.cpp5
-rw-r--r--cpp/test/Ice/operations/Collocated.cpp4
-rw-r--r--cpp/test/Ice/operations/Twoways.cpp59
-rw-r--r--cpp/test/Ice/operations/TwowaysAMI.cpp76
5 files changed, 142 insertions, 17 deletions
diff --git a/cpp/test/Ice/operations/AllTests.cpp b/cpp/test/Ice/operations/AllTests.cpp
index 0b241176635..14cee1c4b6e 100644
--- a/cpp/test/Ice/operations/AllTests.cpp
+++ b/cpp/test/Ice/operations/AllTests.cpp
@@ -15,8 +15,7 @@
using namespace std;
Test::MyClassPrx
-allTests(const Ice::CommunicatorPtr& communicator,
- const Ice::InitializationData& initData, bool collocated)
+allTests(const Ice::CommunicatorPtr& communicator, bool collocated)
{
cout << "testing stringToProxy... " << flush;
string ref = "test:default -p 12010 -t 10000";
@@ -217,18 +216,18 @@ allTests(const Ice::CommunicatorPtr& communicator,
}
cout << "testing twoway operations... " << flush;
- void twoways(const Ice::CommunicatorPtr&, const Ice::InitializationData&, const Test::MyClassPrx&);
- twoways(communicator, initData, cl);
- twoways(communicator, initData, derived);
+ void twoways(const Ice::CommunicatorPtr&, const Test::MyClassPrx&);
+ twoways(communicator, cl);
+ twoways(communicator, derived);
derived->opDerived();
cout << "ok" << endl;
if(!collocated)
{
cout << "testing twoway operations with AMI... " << flush;
- void twowaysAMI(const Ice::CommunicatorPtr&, const Ice::InitializationData&, const Test::MyClassPrx&);
- twowaysAMI(communicator, initData, cl);
- twowaysAMI(communicator, initData, derived);
+ void twowaysAMI(const Ice::CommunicatorPtr&, const Test::MyClassPrx&);
+ twowaysAMI(communicator, cl);
+ twowaysAMI(communicator, derived);
cout << "ok" << endl;
cout << "testing batch oneway operations... " << flush;
diff --git a/cpp/test/Ice/operations/Client.cpp b/cpp/test/Ice/operations/Client.cpp
index 6669a1f041a..d6a343d6a32 100644
--- a/cpp/test/Ice/operations/Client.cpp
+++ b/cpp/test/Ice/operations/Client.cpp
@@ -18,9 +18,8 @@ run(int argc, char* argv[],
const Ice::CommunicatorPtr& communicator,
const Ice::InitializationData& initData)
{
- Test::MyClassPrx allTests(const Ice::CommunicatorPtr&,
- const Ice::InitializationData&, bool);
- Test::MyClassPrx myClass = allTests(communicator, initData, false);
+ Test::MyClassPrx allTests(const Ice::CommunicatorPtr&, bool);
+ Test::MyClassPrx myClass = allTests(communicator, false);
cout << "testing server shutdown... " << flush;
myClass->shutdown();
diff --git a/cpp/test/Ice/operations/Collocated.cpp b/cpp/test/Ice/operations/Collocated.cpp
index ca0e74e0563..58a734b368c 100644
--- a/cpp/test/Ice/operations/Collocated.cpp
+++ b/cpp/test/Ice/operations/Collocated.cpp
@@ -23,8 +23,8 @@ run(int argc, char* argv[], const Ice::CommunicatorPtr& communicator,
adapter->add(new TestCheckedCastI, communicator->stringToIdentity("context"));
adapter->activate();
- Test::MyClassPrx allTests(const Ice::CommunicatorPtr&, const Ice::InitializationData&, bool);
- allTests(communicator, initData, true);
+ Test::MyClassPrx allTests(const Ice::CommunicatorPtr&, bool);
+ allTests(communicator, true);
return EXIT_SUCCESS;
}
diff --git a/cpp/test/Ice/operations/Twoways.cpp b/cpp/test/Ice/operations/Twoways.cpp
index 03aa0f46a53..817fb88b262 100644
--- a/cpp/test/Ice/operations/Twoways.cpp
+++ b/cpp/test/Ice/operations/Twoways.cpp
@@ -25,8 +25,7 @@
using namespace std;
void
-twoways(const Ice::CommunicatorPtr& communicator, const Ice::InitializationData& initializationData,
- const Test::MyClassPrx& p)
+twoways(const Ice::CommunicatorPtr& communicator, const Test::MyClassPrx& p)
{
{
p->opVoid();
@@ -685,6 +684,62 @@ twoways(const Ice::CommunicatorPtr& communicator, const Ice::InitializationData&
communicator->setDefaultContext(Ice::Context());
}
+
+ {
+ //
+ // Test implicit context propagation
+ //
+
+ string impls[] = {"Shared", "SharedWithoutLocking", "PerThread"};
+ for(int i = 0; i < 3; i++)
+ {
+ Ice::InitializationData initData;
+ initData.properties = Ice::createProperties();
+ initData.properties->setProperty("Ice.ImplicitContext", impls[i]);
+
+ Ice::CommunicatorPtr ic = Ice::initialize(initData);
+
+ Ice::Context ctx;
+ ctx["one"] = "ONE";
+ ctx["two"] = "TWO";
+ ctx["three"] = "THREE";
+
+
+ Test::MyClassPrx p = Test::MyClassPrx::uncheckedCast(
+ ic->stringToProxy("test:default -p 12010 -t 10000"));
+
+
+ ic->getImplicitContext()->setContext(ctx);
+ test(ic->getImplicitContext()->getContext() == ctx);
+ test(p->opContext() == ctx);
+
+ ic->getImplicitContext()->set("zero", "ZERO");
+ test(ic->getImplicitContext()->get("zero") == "ZERO");
+ test(ic->getImplicitContext()->getWithDefault("foobar", "foo") == "foo");
+
+ ctx = ic->getImplicitContext()->getContext();
+ test(p->opContext() == ctx);
+
+ Ice::Context prxContext;
+ prxContext["one"] = "UN";
+ prxContext["four"] = "QUATRE";
+
+ Ice::Context combined = prxContext;
+ combined.insert(ctx.begin(), ctx.end());
+ test(combined["one"] == "UN");
+
+ p = Test::MyClassPrx::uncheckedCast(p->ice_context(prxContext));
+
+ ic->getImplicitContext()->setContext(Ice::Context());
+ test(p->opContext() == prxContext);
+
+ ic->getImplicitContext()->setContext(ctx);
+ test(p->opContext() == combined);
+
+ ic->destroy();
+ }
+ }
+
}
{
diff --git a/cpp/test/Ice/operations/TwowaysAMI.cpp b/cpp/test/Ice/operations/TwowaysAMI.cpp
index 7993d4fb497..36262a2fbd9 100644
--- a/cpp/test/Ice/operations/TwowaysAMI.cpp
+++ b/cpp/test/Ice/operations/TwowaysAMI.cpp
@@ -872,8 +872,7 @@ public:
typedef IceUtil::Handle<AMI_MyClass_opDoubleMarshalingI> AMI_MyClass_opDoubleMarshalingIPtr;
void
-twowaysAMI(const Ice::CommunicatorPtr& communicator,
- const Ice::InitializationData& initializationData, const Test::MyClassPrx& p)
+twowaysAMI(const Ice::CommunicatorPtr& communicator, const Test::MyClassPrx& p)
{
{
// Check that a call to a void operation raises TwowayOnlyException
@@ -1322,6 +1321,79 @@ twowaysAMI(const Ice::CommunicatorPtr& communicator,
communicator->setDefaultContext(Ice::Context());
}
+
+ {
+ //
+ // Test implicit context propagation
+ //
+
+ string impls[] = {"Shared", "SharedWithoutLocking", "PerThread"};
+ for(int i = 0; i < 3; i++)
+ {
+ Ice::InitializationData initData;
+ initData.properties = Ice::createProperties();
+ initData.properties->setProperty("Ice.ImplicitContext", impls[i]);
+
+ Ice::CommunicatorPtr ic = Ice::initialize(initData);
+
+ Ice::Context ctx;
+ ctx["one"] = "ONE";
+ ctx["two"] = "TWO";
+ ctx["three"] = "THREE";
+
+
+ Test::MyClassPrx p = Test::MyClassPrx::uncheckedCast(
+ ic->stringToProxy("test:default -p 12010 -t 10000"));
+
+
+ ic->getImplicitContext()->setContext(ctx);
+ test(ic->getImplicitContext()->getContext() == ctx);
+ {
+ AMI_MyClass_opContextEqualIPtr cb = new AMI_MyClass_opContextEqualI(ctx);
+ p->opContext_async(cb);
+ test(cb->check());
+ }
+
+ ic->getImplicitContext()->set("zero", "ZERO");
+ test(ic->getImplicitContext()->get("zero") == "ZERO");
+ test(ic->getImplicitContext()->getWithDefault("foobar", "foo") == "foo");
+
+ ctx = ic->getImplicitContext()->getContext();
+ {
+ AMI_MyClass_opContextEqualIPtr cb = new AMI_MyClass_opContextEqualI(ctx);
+ p->opContext_async(cb);
+ test(cb->check());
+ }
+
+ Ice::Context prxContext;
+ prxContext["one"] = "UN";
+ prxContext["four"] = "QUATRE";
+
+ Ice::Context combined = prxContext;
+ combined.insert(ctx.begin(), ctx.end());
+ test(combined["one"] == "UN");
+
+ p = Test::MyClassPrx::uncheckedCast(p->ice_context(prxContext));
+
+ ic->getImplicitContext()->setContext(Ice::Context());
+ {
+ AMI_MyClass_opContextEqualIPtr cb = new AMI_MyClass_opContextEqualI(prxContext);
+ p->opContext_async(cb);
+ test(cb->check());
+ }
+
+ ic->getImplicitContext()->setContext(ctx);
+ {
+ AMI_MyClass_opContextEqualIPtr cb = new AMI_MyClass_opContextEqualI(combined);
+ p->opContext_async(cb);
+ test(cb->check());
+ }
+
+ ic->destroy();
+ }
+ }
+
+
}
{