#
#  Licensed to the Apache Software Foundation (ASF) under one
#  or more contributor license agreements.  See the NOTICE file
#  distributed with this work for additional information
#  regarding copyright ownership.  The ASF licenses this file
#  to you under the Apache License, Version 2.0 (the
#  "License"); you may not use this file except in compliance
#  with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing,
#  software distributed under the License is distributed on an
#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
#  KIND, either express or implied.  See the License for the
#  specific language governing permissions and limitations
#  under the License.
#

# Test the crankstart launcher by setting up an HTTP
# server with a few servlets that require specific OSGi configurations
[feature name=:crankstart]

[variables]
  felix.framework.version=5.0.0
  slf4j.version = 1.6.2
  http.port = 8080
  osgi.storage.path = CRANKSTART/felix
  osgi.start.level = 42
  
[settings]
  org.osgi.service.http.port = ${http.port}
  org.osgi.framework.storage = ${osgi.storage.path}
  org.osgi.framework.startlevel.beginning = ${osgi.start.level}
  
[artifacts]
  org.apache.felix/org.apache.felix.framework/${felix.framework.version}
  org.slf4j/slf4j-api/${slf4j.version}
  org.slf4j/slf4j-simple/${slf4j.version}
