# 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.

services:
  dubbo-samples-triple:
    type: app
    basedir: .
    checkPorts:
      - 2181
      - 50052
      - 50053
    mainClass: org.apache.dubbo.sample.tri.TestServers

  dubbo-samples-triple-test:
    type: test
    basedir: .
    tests:
      # tri-->tri
      - "org.apache.dubbo.sample.tri/TriStubClientTest.class"
      - "org.apache.dubbo.sample.tri/TriClientTest.class"
      - "org.apache.dubbo.sample.tri/TriPojoClientTest.class"
      - "org.apache.dubbo.sample.tri/TriGenericTest.class"
      # use url direct
      - "org.apache.dubbo.sample.tri/direct/TriDirectClientTest.class"
      - "org.apache.dubbo.sample.tri/direct/TriDirectStubClientTest.class"
      - "org.apache.dubbo.sample.tri/direct/TriDirectPojoClientTest.class"
      # grpc-->tri
      - "org.apache.dubbo.sample.tri/grpc/GrpcClientTest.class"
      # tri-->grpc
      - "org.apache.dubbo.sample.tri/grpc/TriGrpcDirectClientTest.class"
    systemProps:
      - zookeeper.host=dubbo-samples-triple
      - zookeeper.port=2181
      - provider.host=dubbo-samples-triple
      - provider.port=50052
      - grpc.provider.port=50053
    waitPortsBeforeRun:
      - dubbo-samples-triple:2181
      - dubbo-samples-triple:50052
      - dubbo-samples-triple:50053
    depends_on:
      - dubbo-samples-triple




