Re: Karaf 4.3.8 upgrade issues

2022-12-21 Thread Erwin Hogeweg
Unsubscribe

Kind Regards,

Erwin

> On Dec 21, 2022, at 08:01, Jean-Baptiste Onofré  wrote:
> 
> Catcha, ok.
> 
> Doing on new pass with JDK11 anyway to be sure it's not related to JVM 
> version.
> 
> Regards
> JB
> 
>> On Wed, Dec 21, 2022 at 9:50 AM Alex Heneveld  wrote:
>> 
>> Thanks again JB. Java 11 (anything 9+) has proven impossible so far to get
>> a working combo of versions. We've been locked on 8 which has been working
>> well, with a lot of babysitting of the jre.properties.
>> 
>> Best
>> Alex
>> 
>>> On Wed, 21 Dec 2022, 05:28 Jean-Baptiste Onofré,  wrote:
>>> 
>>> Just a note, as you can see here
>>> https://karaf.apache.org/download.html, Karaf 4.3.x is supposed to
>>> work with JDK 11 (not JDK 8). Do you have the same issues with JDK 11
>>> ?
>>> 
>>> Regarding the client disconnects, I think I fixed that already. I will
>>> double check.
>>> 
>>> Regarding jaspic, it's normal: it's a change in Jetty. I remember I
>>> made changes about that. Let me find commits/Jira related to that.
>>> 
>>> At first glance, I don't see any new changes required in Karaf (for
>>> 4.4.3), but I will do a pass anyway.
>>> 
>>> Regards
>>> JB
>>> 
>>> On Tue, Dec 20, 2022 at 11:59 AM Alex Heneveld  wrote:
 
 Thanks JB. Java 8 (Zulu, Mac M1). Hope all goes well w 4.3.9.
 
 Best
 Alex
 
 On Tue, 20 Dec 2022, 04:58 Jean-Baptiste Onofré, 
>>> wrote:
 
> Hi Alex,
> 
> Thanks for the detailed report.
> 
> Which JDK are you using ? I would like to reproduce each topic step by
> step.
> 
> I'm right now preparing 4.4.3 and 4.3.9 releases. Not sure I will have
> time to include any change related to these points, but I will try.
> Else, I will move forward pretty fast new releases just after.
> 
> Regards
> JB
> 
> On Mon, Dec 19, 2022 at 2:20 PM Alex Heneveld 
>>> wrote:
>> 
>> Hi JB, Team,
>> 
>> I'm upgrading various OSGi deps in Apache Brooklyn and have hit three
>> curious issues:
>> 
>> 
>> (1) bin/client disconnects immediately after authentication if no
>>> command
>> specified; this is after enabling the karaf user in
>>> etc/users/properties,
>> `bin/client bundle:list` works, but `bin/client` now disconnects
>> immediately.  `ssh karaf@localhost -p 8101` still works.
>> 
>> At first I thought it was related to (2) but since commands actually
>>> work
>> and an ssh shell works I now suspect a TTY issue.  Logging on client
>>> (`-l
>> 4`) and server don't show much apart from the sudden closing after
>>> the
>> server says "no command provided".
>> 
>> 
>> (2) The log shows scary stack traces when
>> enabling org.apache.karaf.shell.core/4.3.8 about config commands
>>> failing
> to
>> load, eg:
>> 
>> 2022-12-19T10:47:40,020Z - INFO   64 o.a.k.s.i.a.o.CommandExtension
>> [tures-3-thread-1] Inspection of class
>> org.apache.karaf.config.command.CancelCommand failed.
>> java.lang.NoClassDefFoundError:
>>> org/apache/karaf/shell/api/action/Action
>> 
>> This is almost certainly due to loading karaf.config earlier (
>> 
> 
>>> https://github.com/apache/karaf/commit/b783f279c78f79005d15657f10fbe3a84bfdd863
> ).
>> The stack traces are at INFO level and it doesn't have noticeable
>>> impact
> so
>> not a big deal but thought I would say.
>> 
>> 
>> (3) Using Eclipse Jetty, servlets and WARs no longer start unless
> geronimo
>> jaspi specs _and_ provider are explicitly added; I was getting errors
> such
>> as:
>> 
>> Unable to resolve org.eclipse.jetty.security.jaspi/9.4.49.v20220914:
>> missing requirement
>>> [org.eclipse.jetty.security.jaspi/9.4.49.v20220914]
>> osgi.wiring.package;
>> 
> 
>>> filter:="(&(osgi.wiring.package=javax.security.auth.message)(version>=1.0.0)(!(version>=2.0.0)))"
>> 
>> Could not start the servlet context for context path []
>> java.lang.SecurityException: AuthConfigFactory error:
>> java.lang.ClassNotFoundException:
>> org.apache.geronimo.components.jaspi.AuthConfigFactoryImpl not found
>>> by
>> org.apache.geronimo.specs.geronimo-jaspic_1.0_spec [46]
>> 
>> The first was solved by explicitly adding this:
>> 
>> 
> 
>>> mvn:org.apache.geronimo.specs/geronimo-jaspic_1.0_spec/1.1
>> 
>> That used to come with pax, but doesn't any more, and is needed for
>> jetty-websocket, so makes sense.  But that caused the second error,
> which I
>> could only solve by adding a new (never before included) bundle:
>> 
>> 
>>> mvn:org.apache.geronimo.components/geronimo-jaspi/2.0.0
>> 
>> It looks like in the old versions possibly something had been
>>> setting a
>> BasicAuthenticator prior to this code block which meant it previously
>> bypassed this jaspi lookup altogether.  No idea why now it is doing
>>> this
>> lookup.  Also I 

Re: Plan to release Pax Web 8 + some information

2021-09-13 Thread Erwin Hogeweg
+1

Erwin


> On Sep 13, 2021, at 09:42, Achim Nierbeck  
> wrote:
> 
> Big Kudos to Grzegorz for not giving up on this in the last two years!
> 
> best regards, Achim
> 
> 
> Am Mo., 13. Sept. 2021 um 12:27 Uhr schrieb Grzegorz Grzybek <
> gr.grzy...@gmail.com>:
> 
>> Hello!
>> 
>> After almost 2 years of refactoring and development, I think Pax Web 8 is
>> ready for release.
>> Manual updates are still on my list and some exhaustive documentation (and
>> maybe a blog post) is being prepared...
>> 
>> TL;DR:
>> 
>> - `mvn clean install -DskipTests` in `main` branch of
>>> https://github.com/ops4j/org.ops4j.pax.web
>>> - start with clean Karaf 4.3.3
>>> 
>>> karaf@root()> repo-remove org.ops4j.pax.web-7.3.19
>>> karaf@root()> repo-add
>>> mvn:org.ops4j.pax.web/pax-web-features/8.0.0-SNAPSHOT/xml/features
>>> karaf@root()> feature:install pax-web-http-tomcat
>>> karaf@root()> feature:install pax-web-war
>>> karaf@root()> bundle:install -s
>>> 'webbundle:mvn:io.hawt/hawtio-war/2.13.6/war?Web-ContextPath=/hawtio'
>>> 
>>> - browse to http://localhost:8181/hawtio
>>> 
>> 
>> However I think it'd be good to describe the rationale behind the rewrite
>> and some key points of the new release.
>> 
>> *Background information:*
>> 
>> My single, initial reason to start the refactoring was
>> https://github.com/ops4j/org.ops4j.pax.web/issues/1413 issue (migrated
>> from https://ops4j1.jira.com/browse/PAXWEB-1123): "HTTP Whiteboard and
>> selection of the ServletContextHelper".
>> 
>> Whiteboard specification says, that every web element may reference a
>> target ServletContextHelper using "osgi.http.whiteboard.context.select"
>> service registration property and its value is an LDAP filter, which may
>> also be:
>> 
>> osgi.http.whiteboard.context.select=(osgi.http.whiteboard.context.name=*)
>> 
>> which means "register the servlet into ALL available
>> ServletContextHelpers".
>> Pax Web 7 was taking the osgi.http.whiteboard.context.select property
>> value and was doing split("=") on it to get the name/id of the target
>> context... Effectively 1:1 relation was assumed, while Whiteboard
>> specification assumes 1:N relationship.
>> 
>> So I started to rewrite the internal Pax Web model... And somehow much
>> much more was refactored.
>> 
>> *Pax Web 8 goals:*
>> 
>>   - I've carefully read chapters 102 (Http Service specification), 128
>>   (Web Applications specification) and 140 (Whiteboard specification) of OSGi
>>   CMPN R7 and tried to implement everything in best possible way
>>   - I always appreciated how well and cleverly Pax Web was written by
>>   others from this list:
>> 
>> 11:41 $ git shortlog -snc origin/pax-web-7.2.x
>>>   894  adreghi...@gmail.com
>>>   747  anierbeck
>>>   284  Achim Nierbeck
>>>   182  ANierbeck
>>>   123  Guillaume Nodet
>>>   114  Jean-Baptiste Onofré
>>>   103  Marc Schlegel
>>>77  jbonofre
>>>53  lostiniceland
>>>44  Stephan Siano
>>>37  Harald Wellmann
>>>21  Marc Klinger
>>>20  Freeman Fang
>>> ...
>>> 
>> 
>>   - I wanted to keep the "spirit" of Pax Web - emphasizing target
>>   runtime (Jetty, Tomcat, Undertow) over "specification first" approach
>>   - I wanted to ensure that everything in Pax Web works as similar as
>>   possible in all 3 supported runtimes
>>   - I wanted to keep the possibility to use native container
>>   configuration (jetty.xml, tomcat-server.xml, undertow.xml) in addition to
>>   what we can pass through org.ops4j.pax.web PID
>>   - I wanted to make Pax Web 8 more reliable (no more flaky tests, no
>>   more random Thread.sleep() in tests, ...)
>> 
>> *Pax Web 8 highlights:*
>> 
>>   - Latest versions of Jetty 9.4.x, Tomcat 9.0.x (without TIPI!) and
>>   Undertow 2.2.x are used
>>   - Web "elements" mentioned in Http Service and Whiteboard
>>   specifications are handled: servlets, filters, listeners, error pages
>>   - additionally, Pax Web 8 supports everything that can be configured
>>   in web.xml besides: , , ,
>>   , , ,
>>   , , , ,
>>   , , , ,
>>   , , ,
>>   , , ,
>>   , 
>>   - "above" what we can find in web.xml, Pax Web 8 supports:
>>  - ServletContainerInitializers (SCI) - proved by working
>>  JSF/Primefaces/Vaadin examples
>>  - web-fragment.xmls
>>  - annotated web elements (@WebServlet, @WebFilter, @WebListener)
>>  - META-INF/resources locations
>>  - websockets via HttpService and Whiteboard
>>  - web fragment scanning using tomcat-util-scanner
>>   - without any mention in any CMPN specification, JSPs, welcome-pages,
>>   security configurations are supported
>>   - no more xbean used to scan the "class space"
>>   - no more dependency to ASM
>>   - single configuration thread that operates on global model and
>>   synchronizes the model changes with the state of target runtime (Jetty,
>>   Tomcat, Undertow)
>>   - consistent structure of pax-web-jetty, pax-web-tomcat and
>>   pax-web-undertow:
>>  - there's single
>>  org.ops4j.pax.web.service..internal.ServerControll

Re: [RESULT][VOTE] Apache Karaf Runtime 4.2.8 release (take #2)

2020-01-23 Thread Erwin Hogeweg
Awesome. Thank you all for the hard work. 

Erwin

> El ene. 23, 2020, a la(s) 03:06, Jean-Baptiste Onofré  
> escribió:
> 
> Hi everyone,
> 
> this vote passed with the following result:
> 
> +1 (binding): Grzegorz Grzybek, François Papon, Freeman Fang, Jamie
> Goodyear, Achim Nierbeck, JB Onofré
> +1 (non binding): Romain Manni-Bucau, Fabian Lange, Markus Rathgeb,
> Roedl Lukas
> 
> I'm promoting the artifacts on Maven Central and dist.a.o. I'm also
> updating Jira and preparing the announcement on mailing lists and website.
> 
> Thanks all for your vote.
> 
> Now, my target (highest priority) is 4.3.0.RC1 ;)
> 
> Regards
> JB
> 
>> On 19/01/2020 22:49, Jean-Baptiste Onofré wrote:
>> Hi all,
>> 
>> I submit Apache Karaf runtime 4.2.8 to your vote. This is a
>> maintenance release on the 4.2.x series, bringing updates, improvements
>> and fixes.
>> 
>> Release Notes:
>> https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311140&version=12346100
>> 
>> Staging Repository:
>> https://repository.apache.org/content/repositories/orgapachekaraf-1138
>> 
>> Staging Dist:
>> https://dist.apache.org/repos/dist/dev/karaf/4.2.8/
>> 
>> Git Tag:
>> karaf-4.2.8
>> 
>> Please vote to approve this release:
>> 
>> [ ] +1 Approve the release
>> [ ] -1 Don't approve the release (please provide specific comments)
>> 
>> This vote will be open for at least 72 hours.
>> 
>> Thanks,
>> Regards
>> JB
>> 
> 
> -- 
> Jean-Baptiste Onofré
> jbono...@apache.org
> http://blog.nanthrax.net
> Talend - http://www.talend.com



Re: Merry Christmas & releases on the way

2019-12-25 Thread Erwin Hogeweg
Thanks JB,

Merry Christmas to you and the Karaf team as well. 

Thanks for the update. 


Erwin

> El dic. 25, 2019, a la(s) 04:13, Jean-Baptiste Onofré  
> escribió:
> 
> Hi guys,
> 
> on behalf of the Karaf team, I wish a Merry Christmas to the whole Karaf
> community.
> 
> Let me use this mail to give you an update about releases:
> - Karaf 4.2.8 is planned before the end of this year (this week or early
> beginning of next week).
> - I do my best to cut 4.3.0.RC1 next week, but it's possible that I will
> cut the release first week of January (depending how fast I can be on
> 4.2.8 preparation).
> - Decanter 2.3.0 preparation moved well, but I have to release Karaf
> 4.2.8 first (as I have dependency to KarafTestSupport 4.2.8 for Decanter
> itests).
> 
> I keep you posted !
> 
> Again, Merry Christmas and enjoy time with family and friends.
> 
> Regards
> JB
> 
>> On 11/10/2019 07:31, Jean-Baptiste Onofré wrote:
>> Hi guys,
>> 
>> I've almost finished the refactoring of Cave for Cave 4.2.0 release:
>> 
>> https://github.com/jbonofre/karaf-cave/tree/REFACTORING
>> 
>> I'm polishing a bit this morning and merge to master later today.
>> I will prepare the Cave 4.2.0 during the week end.
>> 
>> On the other hand, I moved forward on Karaf master heading to 4.3.0.RC1.
>> I should be able to push a first RC (RC1) beginning on next week.
>> 
>> Meantime, I also moved forward on Decanter 2.3.0 preparation with new
>> improvements, fixes, etc.
>> The target is to submit this release in couple of weeks.
>> 
>> Stay tuned !
>> 
>> Regards
>> JB
>> 
> 
> -- 
> Jean-Baptiste Onofré
> jbono...@apache.org
> http://blog.nanthrax.net
> Talend - http://www.talend.com



Re: Apache-4.2 CXF-3.11 ContainerRequestFilter struggles - SOLVED

2019-09-11 Thread Erwin Hogeweg
All -

I got JWT token security working now with Karaf-4.2.6, but I had to switch from 
CXF to JAX-RS whiteboard. The JAX-RS whiteboard spec is officially part of OSGi 
7 but this solution works fine with K-4.2.6 and OSGi-6. It took me a while to 
figure this out, so I want to share what I learned here.

There are 3 jigsaw pieces needed to make this work.

1. The filter needs to be registered as ContainerRequestFilter with the 
osgi.jaxrs.extension property set to true, otherwise it is not picked up. The 
filter also needs the annotation for which it is applicable. If omitted the 
filter method will be called for every endpoint call. The name of the 
annotation is arbitrary but it seems that JWTAdminTokenNeeded, JWTTokenNeeded 
and JWTUserTokenNeeded are most common.

@JWTAdminTokenNeeded
@Component( service = ContainerRequestFilter.class, property = { 
"osgi.jaxrs.extension=true” } )
public class JWTAdminTokenNeededFilter implements 
ContainerRequestFilter {

2. The endpoint component needs to be registered with the osgi.jaxrs.resource 
property set to true, like so.

@Component(service = TheService.class, property = { 
"osgi.jaxrs.resource=true" })
public class TheServiceImpl implements TheService {

3. The endpoint method needs the annotation for the required filter.
@Override
@JWTAdminTokenNeeded
@PUT
@Path("/")
public Response updateThingy(ThingyDTO thingy) {


Most, if not all of the above is described in the OSGi 7 JAX-RS whiteboard 
Specification here 
https://osgi.org/specification/osgi.cmpn/7.0.0/service.jaxrs.html 
<https://osgi.org/specification/osgi.cmpn/7.0.0/service.jaxrs.html> but 
sometimes you won’t see it until you know what you are looking for.

Hope this helps.

BTW… I am still a tad confused why this won’t work with CXF so if someone has 
some ideas I’d be more than happy to give that another try.


Erwin



> On Aug 26, 2019, at 19:19, Erwin Hogeweg  wrote:
> 
> Hi,
> 
> Does anyone have an example on how to register a ContainerRequestFilter with 
> CXF in Karaf-4.2?
> 
> As far as I can see everything is in place, but the filter() and validate() 
> methods are never called before the service methods are invoked. I am sure I 
> am missing something but so far I haven’t discovered it yet. I was wondering 
> if somebody had an idea before I start digging in the CXF code.
> 
> 
> Thanks for your help,
> 
> Erwin
> 
> 
> This is from my JWTTokenNeededFilter file.
> @JWTTokenNeeded
> @Component( immediate = true,
> name = "my.jwt.filters.JWTTokenNeededFilter",
> configurationPolicy = ConfigurationPolicy.OPTIONAL
> )
> @Provider
> @Priority(Priorities.AUTHENTICATION)
> public class JWTTokenNeededFilter implements ContainerRequestFilter {…}
> 
> 
> In my RS Service Component I define the Filters as follows (Not entirely sure 
> if this is correct).
> 
>   @Component(
>   immediate = true, 
>   name = "com.seecago.rome.usermgt.service", 
>   configurationPolicy = ConfigurationPolicy.OPTIONAL, 
>   property = {
>   "type=internal", 
>   “service.exported.interfaces=my.service.MyManagementService",
>   "service.exported.configs=org.apache.cxf.rs 
> <http://org.apache.cxf.rs/>", 
>   "org.apache.cxf.rs.address=/UserProfile",
>   "service.exported.intents=HTTP",
>   
> “org.apache.cxf.rs.provider=my.jwt.filters.JWTAdminTokenNeededFilter",
>   
> “org.apache.cxf.rs.provider=my.jwt.filters.JWTUserTokenNeededFilter",
>   
> “org.apache.cxf.rs.provider=my.jwt.filters.JWTTokenNeededFilter"})
> 
> 
> This is how I defined a secure service call:
> @Override
> @JWTTokenNeeded
>   public SomeResult getItemById(Long itemId) {…}
> 
> 
> And this is what scr:info n returns for the Filter Component:
> 
> *** Bundle: my.server.security (205)
> Component Description:
>   Name: my.jwt.filters.JWTTokenNeededFilter
>   Implementation Class: my.jwt.filters.JWTTokenNeededFilter
>   Default State: enabled
>   Activation: immediate
>   Configuration Policy: optional
>   Activate Method: activate
>   Deactivate Method: deactivate
>   Modified Method: -
>   Configuration Pid: [my.jwt.filters.JWTTokenNeededFilter]
>   Services: 
> javax.ws.rs.container.ContainerRequestFilter
>   Service Scope: singleton
>   Component Description Properties:
>   Component Configuration:
> ComponentId: 5
> State: active  
> Component Configuration Properties:
> component.id <http://component.id/> = 5
> component.name = my.jwt.filters.JWTTokenNeededFilter
> 
> 
> 



Re: [ANN] Apache Karaf (runtime) 4.2.6 has been released!

2019-06-10 Thread Erwin Hogeweg
Wonderful JB,

As always, kudos to the Karaf team for the commitment and all the hard work. 

Erwin

El jun. 10, 2019, a la(s) 12:39, Jean-Baptiste Onofré  
escribió:

> The Apache Karaf team is pleased to announce Apache Karaf (runtime)
> 4.2.6 release!
> 
> Apache Karaf (runtime) 4.2.6 is a maintenance release on the 4.2.x
> series. It brings improvements, dependency updates, and bug fixes
> especially:
> 
> * fix SCR with Equinox
> * fix subshell mode
> * Pax Web and Jetty upgraded including CVE fixes
> * new web:install command
> * and much more
> 
> You can take a look on the Release Notes for details:
> 
> https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311140&version=12345365
> 
> You can download the release from the Karaf website:
> 
> http://karaf.apache.org/download.html#container-426
> 
> Enjoy !
> 
> The Karaf Team



Re: [ANN] Apache Karaf (runtime) 4.2.5 has been released!

2019-04-22 Thread Erwin Hogeweg
Awesome team, thanks for all the good work. 

Erwin

El abr. 22, 2019, a la(s) 00:38, Jean-Baptiste Onofré  
escribió:

> The Apache Karaf team is pleased to announce Apache Karaf (runtime)
> 4.2.5 release!
> 
> Apache Karaf (runtime) 4.2.5 is a maintenance release on the 4.2.x
> series. It brings improvements and bug fixes especially:
> 
> * fixes on SCR commands
> * new dockerfile and docker goals in the karaf-maven-plugin
> * fix on the scheduler
> * fix on the archive goal in the karaf-maven-plugin
> 
> You can take a look on the Release Notes for details:
> 
> https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311140&version=12345153
> 
> You can download the release from the Karaf website:
> 
> http://karaf.apache.org/download.html#container-425
> 
> Enjoy !
> 
> The Karaf Team



Re: [RESULT][VOTE] Apache Karaf (runtime) 4.2.2 release

2018-12-21 Thread Erwin Hogeweg
Congrats JB. 

Erwin

On Dec 20, 2018, at 2:09, Jean-Baptiste Onofré  wrote:

> Hi,
> 
> this vote passed with the following result:
> 
> +1 (binding): Christian Schneider, François Papon, Jamie Goodyear,
> Freeman Fang, Grzegorz Grzybek, Achim Nierbeck, Jean-Baptiste Onofré
> +1 (non binding): Andrea Cosentino, Markus Rathgeb, Romain Manni-Bucau,
> Roedl Lukas, Fabian Lange, Dennis Kieselhorst, Stephen Kitt
> 
> I'm promoting the artifacts to Maven Central and Apache dist. I'm also
> updating Jira and I will update the website (when the artifacts will be
> sync on mirrors). Then, I will announce the release on mailing list,
> twitter, etc.
> 
> Thanks all for your vote. We can be happy to see the number of votes for
> this release !
> 
> Regards
> JB
> 
> On 16/12/2018 11:11, Jean-Baptiste Onofré wrote:
>> Hi all,
>> 
>> Finally, after different new fixes and third party releases, I'm glad to
>> submit Karaf (runtime) 4.2.2 release to your vote. This is a major
>> maintenance release for 4.2.x series, bringing a lot of fixes &
>> improvements.
>> 
>> Release Notes:
>> https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12343458&projectId=12311140
>> 
>> Staging Repository:
>> https://repository.apache.org/content/repositories/orgapachekaraf-1123/
>> 
>> Git Tag:
>> karaf-4.2.2
>> 
>> Please vote to approve this release:
>> 
>> [ ] +1 Approve the release
>> [ ] -1 Don't approve the release (please provide specific comments)
>> 
>> This vote will be open for at least 72 hours.
>> 
>> Thanks,
>> Regards
>> JB
>> 
> 
> -- 
> Jean-Baptiste Onofré
> jbono...@apache.org
> http://blog.nanthrax.net
> Talend - http://www.talend.com


audit/FastDateFormatTest fails in 4.2.0 and master

2018-06-09 Thread Erwin Hogeweg
Hi,

The FastDateFormatTest fails on Windows and Mac with Java-8 (and the failure 
doesn't make any sense…).

Has anyone else experienced this?


Thanks,

Erwin

[INFO] Running org.apache.karaf.audit.TestPerf
[WARNING] Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 s - 
in org.apache.karaf.audit.TestPerf
[INFO] 
[INFO] Results:
[INFO] 
[ERROR] Failures: 
[ERROR]   FastDateFormatTest.test:39 expected: but was:
[INFO] 
[ERROR] Tests run: 9, Failures: 1, Errors: 0, Skipped: 1