Hi Jean-Baptiste
Don't worry about my name ;)
I'm using a fresh Karaf 3.0.1 installation because I'm in a Pax Exam test
using this option:
KarafDistributionOption.karafDistributionConfiguration().frameworkUrl(CoreOptions.maven().groupId("org.apache.karaf").artifactId("apache-karaf").type("tar.gz")).karafVersion("3.0.1").name("Apache
Karaf")
Then, I suppose I have default values in etc/* files.
Bundle:install commands work perfectly in standalone Karaf instance with
same bundles.
I will use this class as reference for my future tests if I need executing
commands in the shell. Now, as Achim Nierbeck told me, I will inject and
use BundleContext in order to install and uninstall bundles in my test.
Thank you very much.
<http://dana.i2cat.net> <http://www.i2cat.net/en>
Julio C. Barrera Juez [image: View my profile on
LinkedIn]<http://es.linkedin.com/in/jcbarrera/en>
Office phone: (+34) 93 357 99 27 (ext. 527)
Office mobile phone: (+34) 625 66 77 26
Distributed Applications and Networks Area (DANA)
i2CAT Foundation, Barcelona
On 28 May 2014 16:58, Jean-Baptiste Onofré <[email protected]> wrote:
> Hi Julio,
>
> first of all, sorry in my previous e-mail to not use your correct name ;)
>
> You get Insufficient credentials for all commands or only for bundle:*
> commands ? Could you check what you have in etc/*acl.cfg files ?
>
> The same action works fine in Karaf standalone, right ?
>
> Can you use the executeCommand() method provided by KarafTestSupport ?
>
> For instance, in the Karaf itest, we do:
>
> @Test
> public void installUninstallCommand() throws Exception {
> executeCommand("bundle:install mvn:org.apache.servicemix.
> bundles/org.apache.servicemix.bundles.commons-lang/2.4_6");
>
> assertBundleInstalled("org.apache.servicemix.bundles.commons-lang");
> executeCommand("bundle:uninstall org.apache.servicemix.bundles.
> commons-lang");
>
> assertBundleNotInstalled("org.apache.servicemix.bundles.commons-lang");
> }
>
> If you can't (or don't want to) use the KarafTestSupport, you have to use
> Subject.doAs() to execute the command session in "privileged" mode
> (something like:
>
> commandFuture = new FutureTask<String>(new Callable<String>() {
> @Override
> public String call() throws Exception {
> Subject subject = new Subject();
>
> subject.getPrincipals().addAll(Arrays.asList(principals));
> return Subject.doAs(subject, new
> PrivilegedExceptionAction<String>() {
> @Override
> public String run() throws Exception {
> return commandCallable.call();
> }
> });
> }
> });
> )
>
> Honestly, the easiest way is to directly use the executeCommand() provided
> by KarafTestSupport.
>
> Regards
> JB
>
>
> On 05/28/2014 03:02 PM, Julio Carlos Barrera Juez wrote:
>
>> I'm using Karaf 3.0.1 and Pax Exam 3.5.0. I tried using these commands
>> in my test:
>>
>> bundle:install -s -f mvn:<gId>/<aId>/<v> (two times with different
>> bundles)
>> bundle:uninstall -f <bundleId>
>>
>> I configured CommandSession without any option. I am still getting the
>> exception after calling the install command:
>>
>> bundle:install -s -f mvn:<gId>/<aId>/<v>
>> java.lang.SecurityException: Insufficient credentials.
>> ...
>>
>> What is my mistake?
>>
>> Thank you.
>>
>> PD: I'm Julio, not Julian ;)
>>
>>
>> Julio C. Barrera Juez
>> Office phone: +34 93 357 99 27
>> Distributed Applications and Networks Area (DANA)
>> i2CAT Foundation, Barcelona
>> http://dana.i2cat.net <http://dana.i2cat.net/>
>>
>>
>>
>> On 28 May 2014 14:01, Jean-Baptiste Onofré <[email protected]
>> <mailto:[email protected]>> wrote:
>>
>> Hi Julian,
>>
>> I guess that you use Karaf 3.0.0, right ?
>>
>> What's the command that you want to do (maybe bundle:* -f may help) ?
>>
>> You don't have to provide any use as it uses the default one
>> (karaf), like when you run karaf bin bin/karaf.
>>
>> Regards
>> JB
>>
>>
>> On 05/28/2014 01:14 PM, Julio Carlos Barrera Juez wrote:
>>
>> Hello.
>>
>> I'm creating a Pax Exam test and I want to install a bundle in an
>> specific moment of the test. I'm using a CommandSession to
>> use bundle:install command. I get more or less all the stuff
>> working,
>> but I'm getting "java.lang.SecurityException: Insufficient
>> credentials".
>>
>> My CommandSession is obtained locally (without getting
>> explicitly the
>> OSGi service with:
>>
>> final CommandSession commandSession =
>> commandProcessor.__createSession(System.in, printStream,
>>
>> System.err);
>>
>>
>> as I saw in many examples. What I need to do to inject
>> credentials in
>> this session. I've found many non-working solutions like:
>>
>> commandSession.put("__APPLICATION",
>>
>> System.getProperty("karaf.name <http://karaf.name>
>> <http://karaf.name>", "root"));
>>
>>
>> commandSession.put("USER", "karaf");
>>
>> Thank you!
>>
>>
>> Julio C. Barrera Juez
>> Office phone: +34 93 357 99 27 <tel:%2B34%2093%20357%2099%2027>
>>
>> Distributed Applications and Networks Area (DANA)
>> i2CAT Foundation, Barcelona, Spain
>> http://dana.i2cat.net <http://dana.i2cat.net/>
>>
>>
>> --
>> Jean-Baptiste Onofré
>> [email protected] <mailto:[email protected]>
>>
>> http://blog.nanthrax.net
>> Talend - http://www.talend.com
>>
>>
>>
> --
> Jean-Baptiste Onofré
> [email protected]
> http://blog.nanthrax.net
> Talend - http://www.talend.com
>