Mike, Thanks for your detailed explanation about this problem. Now I think I've got the exact meaning of the description about ASM60002. On Tue, Nov 25, 2008 at 10:23 PM, Mike Edwards < [EMAIL PROTECTED]> wrote:
> Susan, > > I think that you have chosen a very difficult assertion to test. > > Unfortunately, your testcase does not actually test conformance to > [ASM60002], so it is not surprising that your testcase does not find an > error here. > > If a composite has @local=true, then the requirement is that all components > contained within that composite must run in the same operating system > process. This does *NOT* mean that the components within the composite must > all offer local services - in principle they could all implement remotable > services and the composite would be valid. Your test checks if the services > are local or remotable - which is not what the conformance assertion is > about. > > To build a testcase that would really test for [ASM60002], it would be > necessary to create a test in which you have a composite marked @local=true > where you are able to indicate to the SCA runtime that you want specific > components within the composite to be deployed onto different nodes (since > each node is a different process). Trying to deploy the composite in this > way should then cause an error of some kind. > > Unfortunately, with the current implementation of Tuscany, there is no way > of telling Tuscany to deploy different components within one composite to > different nodes. As a result, I don't think there is any way of building a > test for this conformance assertion. > > Yours, Mike. > > > Shu Chao Wan wrote: > >> >> Hey, >> >> I'm writing test case about conformance item ASM60002, and haven't got the >> result I expected. >> >> >> *Conformance Item ASM60002* >> *----------------------------------------------------------------------------------------* >> >> local : boolean (0..1) �C whether all the components within the composite >> all run in the same operating system process. @local="true" for a composite >> means that all the components within the composite MUST run in the same >> operating system process. *[ASM60002]* local="false", which is the default, >> means that different components within the composite can run in different >> operating system processes and they can even run on different nodes on a >> network. >> >> *----------------------------------------------------------------------------------------* >> >> >> According to the above description, I created the following composite file >> *localcomponent.composite* with two conponents, one is a local component >> (BComponent), the other is remote one(HelloWorldServiceComponent). And the >> "local" attribute is set as "true". >> *localcomponennt.composite* >> *----------------------------------------------------------------------------------------* >> >> <composite xmlns="http://www.osoa.org/xmlns/sca/1.0" >> xmlns:xsd="http://www.w3.org/2001/XMLSchema" >> targetNamespace="http://assembly-tests" >> name="Assembly-LocalComponent--Composite" *local="true"*> >> <component name="HelloWorldServiceComponent"> >> <service name="HelloWorldService"> >> <interface.java >> interface="helloworld.HelloWorldService" /> >> <binding.ws uri=" >> http://localhost:8085/HelloWorldService"/> >> </service> >> </component> >> <component name="BComponent"> >> <implementation.java >> class="org.apache.tuscany.sca.vtest.assembly.composite.impl.BServiceImpl"/> >> <property name="someProperty">some b component value</property> >> </component> </composite> >> *----------------------------------------------------------------------------------------* >> >> >> Then I create the testcase to invoke the services of the two components >> individually, and supposed that ServiceRuntimeException exception will be >> thrown. But actually I haven't got any exception, even without any warning >> message in the console. Is there any problem with my testcase? Thanks for >> any help in advance. >> >> *Testcase* >> *----------------------------------------------------------------------------------------* >> >> /** >> * Lines 1036-1037: >> * <p> >> * local="true" means that all the components must run in the same process. >> * <p> >> * ASM60002: >> * <p> >> * [EMAIL PROTECTED]"true" for a composite means that all the components >> within the >> composite MUST run in the same operating system process. >> */ >> @Test(expected = ServiceRuntimeException.*class*) >> *public* *void* ASM60002() *throws* Exception { >> initDomain("localcomponent.composite"); >> HelloWorldService service = >> ServiceFinder./getService/(HelloWorldService.*class*, >> "HelloWorldServiceComponent"); >> Assert./assertEquals/("Hello, tester", >> service.getGreetings("tester")); >> BService bService = ServiceFinder./getService/(BService.*class*, >> "BComponent"); >> Assert./assertEquals/("SomeStateFromB", bService.getState()); >> } >> *----------------------------------------------------------------------------------------* >> >> >> >> Best Regards >> Susan Wan��(���糬) >> ------------------------- >> WebSphere Application Server System Verification Test, IBM China SoftWare >> Development Lab >> Tel: 86-10-82453655 >> E-mail: [EMAIL PROTECTED] Address: 3/F, Diamond Building, ZhongGuanCun >> Software Park , Dongbeiwang West Road No.8, ShangDi, Haidian District, >> Beijing 100193, PRC >> > >
