Hi ,

While testing a controller service (Awscredentialprovidercontrolerservice)
i am getting IlligalStateException,
in the runner.enablecontrolerService(...) , when i am removing LINE3 code i
am getting null pointer exception in the useStratergy value(in the custom
validate).
What i have annalysed the properties list,  i am getting all the properties
values that are present in the default
Awscredentialprovidercontrolerservice class.
It should have my properties list which i have defined in the custom
Awscredentialprovidercontrolerservice class.


code:
@Test
    public void testAwscredentialprovidercontrolerservice() {
final TestRunner runner = TestRunners.newTestRunner(puts3Object.class);
Final Awscredentialprovidercontrolerservice serviceImpl = new
Awscredentialprovidercontrolerservice()
Runner.setProperty(..)
#LINE3#runner.setProperty(serviceImpl,AbstractAWSCredentialsProviderProcessor.AWS_CREDENTIALS_PROVIDER_SERVICE,"awsCredsProviderService");
runner.enablecontrolerService(serviceImpl)
   }

In the custom Awscredentialprovidercontrolerservice I have added ,

public static final PropertyDescriptor AWS_CONTROLER_SERVICE = new
PropertyDescriptor.Builder()
  .name(“AWS Service")
  .description("Specified the SSL Context Service that can be used to
create secure connections")
  .required(true)
  .identifiesControllerService(Awscredentialprovidercontrolerservice
.class)

Thanks,
Sanjeet


On Thu, 17 Oct, 2019, 11:42 PM Bryan Bende, <[email protected]> wrote:

> You should be able use mockito (or any other mocking framework),
> something like...
>
> AWSCredentialsProviderService service =
> Mockito.mock(AWSCredentialsProviderService.class)
> //setup whatever you want the mock to do
>
> runner.setProperty(service,
> AbstractAWSCredentialsProviderProcessor.AWS_CREDENTIALS_PROVIDER_SERVICE,
> "awsCredsProviderService");
> runner.enableControllerService(service);
>
> On Thu, Oct 17, 2019 at 1:54 PM sanjeet rath <[email protected]>
> wrote:
> >
> > Thanks a lot bryan , for helping me to identify proper UNIT testing.
> > I will go with ur suggestion, will write unit testing for custom
> > controlerservice and separate for custom processor service.
> > If possible Can u give me a example of mock the
> > AWSCredentialsProviderService interface.
> >
> > Regards,
> > sanjeet
> >
> > On Thu, Oct 17, 2019 at 9:41 PM Bryan Bende <[email protected]> wrote:
> >
> > > Please only email one list, removing users...
> > >
> > > The AWS processors depend on an interface called
> > > AWSCredentialsProviderService.  The unit test of the processor should
> > > not need to depend on real implementations of this interface,
> > > otherwise it is really an integration test of multiple components.
> > >
> > > I would suggest testing your processor and service separately... the
> > > processor test can mock the AWSCredentialsProviderService interface.
> > >
> > >
> > > On Thu, Oct 17, 2019 at 11:50 AM sanjeet rath <[email protected]>
> > > wrote:
> > > >
> > > > Hi Team,
> > > >
> > > > I am new to this community, today i have joined and this is my first
> > > query.(already from last 15 days i got stuck here)
> > > >
> > > > I have build a nifi custom processor.to put a object in AWS s3
> > > bucket.(Just Modified Puts3Object processor in NIFI- AWS-PROCESSOR
> project)
> > > > In this processor  Awscredentialprovidercontrolerservice is the
> default
> > > one to connect AWS.
> > > >
> > > > But our project structure we have a custom controller service
> > > ,Awscredentialprovidercontrolerservice controller service  to connect
> AWS
> > > with our defined attributes.(This is present in a separate project
> > > NIFI-AWS-CUSTOM_PING_CONTROLER)
> > > > I want to use this custom controller service , instead of the default
> > > Awscredentialprovidercontrolerservice one which is present in the NIFI-
> > > AWS-PROCESSOR project
> > > >
> > > > My question is I want to do the unit testing (Using JUnit &
> Mockito)  to
> > > validate this custom Awscredentialprovidercontrolerservice is working
> or
> > > not like if I get invalid bucket name then test case should failed.
> > > >
> > > > My code structure:
> > > > @Test
> > > >     public void testRetryLogin() {
> > > >         final TestRunner runner = TestRunners.newTestRunner(new
> > > puts3Object);
> > > > final Awscredentialprovidercontrolerservice  serviceimpl= new
> > > Awscredentialprovidercontrolerservice()
> > > > Runner.setproperty(…)
> > > > Runner.enablecontrolerservice(serviceimpl)
> > > > runner.run();
> > > >        // will do assert  }
> > > >
> > > > This gives me compiler error in error in
> > > Awscredentialprovidercontrolerservice instance creation line as custom
> > > controller service project is not available to this processor service
> > > project. If we add dependency in pom file to make it available then it
> will
> > > be circular dependency.
> > > > Because  already in custom controlerservice pom file , custom
> processor
> > > is already added in dependency..
> > > >
> > > > Thanks in advance :)
> > > >
> > > > --
> > > > Sanjeet Kumar Rath,
> > > > mob- +91 8777577470
> > > >
> > >
> >
> >
> > --
> > Sanjeet Kumar Rath,
> > mob- +91 8777577470
>

Reply via email to