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

all: generate

generate:
	@if ! command -v curl &> /dev/null; then \
		echo "curl could not be found, please install curl."; \
		exit 1; \
	fi

	@if ! command -v thrift &> /dev/null; then \
		echo "thrift could not be found, please install thrift 0.15.0"; \
		exit 1; \
	fi

	@if [[ "`thrift --version|grep -o '0.15.[0-9]'`" == "" ]]; then \
		echo "please install thrift 0.15.0"; \
		exit 1; \
	fi

	@if [ -f "../thrift/src/main/thrift/rpc.thrift" ]; then \
		thrift -out . -gen go ../thrift/src/main/thrift/rpc.thrift; \
	else \
		curl -o rpc.thrift https://raw.githubusercontent.com/apache/iotdb/master/thrift/src/main/thrift/rpc.thrift; \
		thrift -out . -gen go rpc.thrift; \
		rm -f rpc.thrift; \
	fi
	@rm -rf rpc/t_s_i_service-remote

.PHONY: generate all test e2e_test e2e_test_clean

test:
	go test -v ./client/...

e2e_test:
	sh -c "cd /tmp/ && rm -rf iotdb && git clone https://github.com/apache/iotdb.git && cd iotdb && mvn -Dmaven.test.skip=true package -am -pl server"
	mkdir -p target/iotdb
	unzip -o -q /tmp/iotdb/server/target/iotdb-server-*.zip -d target/iotdb
	docker-compose -f test/e2e/docker-compose.yml up --build --abort-on-container-exit --remove-orphans

e2e_test_clean:
	rm -rf /tmp/iotdb target
	docker-compose -f test/e2e/docker-compose.yml down

#only used for project structure that the iotdb main project is in the parent folder of this project.
e2e_test_for_parent_git_repo:
	mkdir -p target/iotdb
	unzip -o -q ../server/target/iotdb-server-*.zip -d target/iotdb
	docker-compose -f test/e2e/docker-compose.yml up --build --abort-on-container-exit --remove-orphans

e2e_test_clean_for_parent_git_repo:
	rm -rf target
	docker-compose -f test/e2e/docker-compose.yml down
