You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by mm...@apache.org on 2018/05/15 19:12:29 UTC
[incubator-pulsar] branch master updated: Descriptions of the
changes in this PR: (#1779)
This is an automated email from the ASF dual-hosted git repository.
mmerli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-pulsar.git
The following commit(s) were added to refs/heads/master by this push:
new bcc0bde Descriptions of the changes in this PR: (#1779)
bcc0bde is described below
commit bcc0bdee67d620b833c33e5a683b08cf04c928b4
Author: Sijie Guo <gu...@gmail.com>
AuthorDate: Tue May 15 12:12:25 2018 -0700
Descriptions of the changes in this PR: (#1779)
*Motivation*
Currently all pulsar's integration tests and bc tests are docker based and written
using arquillian framework. Due to the way how pulsar integration tests were written,
we can *ONLY* run integration tests in a linux environment. It is inconvinient to people
who is using macOS as the development environment.
*Solution*
This PR is providing a Vagrantfile to lanuch a dev vm that contains all the tools required
for running integration tests and bc tests. So people can actually debug and test integration
tests locally using a linux vm.
---
.gitignore | 3 ++
dev/README.md | 53 +++++++++++++++++++++++++++++++++++
dev/Vagrantfile | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 143 insertions(+)
diff --git a/.gitignore b/.gitignore
index dcb7373..988fe39 100644
--- a/.gitignore
+++ b/.gitignore
@@ -51,3 +51,6 @@ deployment/terraform-ansible/aws/.terraform/
deployment/terraform-ansible/aws/.terraform.tfstate.lock.info
deployment/terraform-ansible/aws/terraform.tfstate
deployment/terraform-ansible/aws/terraform.tfstate.backup
+
+# Vagrant
+**/.vagrant
diff --git a/dev/README.md b/dev/README.md
new file mode 100644
index 0000000..6be1070
--- /dev/null
+++ b/dev/README.md
@@ -0,0 +1,53 @@
+## Apache Pulsar Dev Tools
+
+### Running Integration Tests on macOS
+
+Currently all the integration tests are docker based and written using arquillian framework.
+Due to the networking issues, the integration tests can only be run on linux environment.
+For people who is using macOS as their development environment, you can use [Vagrant](https://www.vagrantup.com)
+to launch a linux virtual machine and run the integration tests there.
+
+1. [Download and Install](https://www.vagrantup.com/downloads.html) Vagrant.
+
+2. Provision and launch the dev vm.
+
+ ```shell
+ $ cd ${PULSAR_HOME}/dev
+
+ # provision the vm
+ $ vagrant up
+ ```
+
+3. The dev vm will try to mount your current pulsar workspace to be under `/pulsar` in the vm. You might
+ potentially hit following errors due to fail to install VirtualBox Guest additions.
+
+ ```
+ /sbin/mount.vboxsf: mounting failed with the error: No such device
+ ```
+
+ If that happens, follow the below instructions:
+
+ ```
+ # ssh to the dev vm
+ $ vagrant ssh
+
+ [vagrant@bogon pulsar]$ sudo yum update -y
+ [vagrant@bogon pulsar]$ exit
+
+ # reload the vm
+ $ vagrant reload
+ ```
+
+4. Now, you will have a pulsar dev vm ready for running integration tests.
+
+ ```shell
+ $ vagrant ssh
+
+ # once you are in the pulsar dev vm, you can launch docker.
+ [vagrant@bogon pulsar]$ sudo systemctl start docker
+
+ # your pulsar workspace will be mount under /pulsar
+ [vagrant@bogon pulsar]$ cd /pulsar
+
+ # you can build and test using maven commands
+ ```
diff --git a/dev/Vagrantfile b/dev/Vagrantfile
new file mode 100644
index 0000000..f083593
--- /dev/null
+++ b/dev/Vagrantfile
@@ -0,0 +1,87 @@
+#/**
+# * 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.
+# */
+
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+
+# All Vagrant configuration is done below. The "2" in Vagrant.configure
+# configures the configuration version (we support older styles for
+# backwards compatibility). Please don't change it unless you know what
+# you're doing.
+Vagrant.configure("2") do |config|
+ # The most common configuration options are documented and commented below.
+ # For a complete reference, please see the online documentation at
+ # https://docs.vagrantup.com.
+
+ # Every Vagrant development environment requires a box. You can search for
+ # boxes at https://vagrantcloud.com/search.
+ config.vm.box = "centos/7"
+
+ # Disable automatic box update checking. If you disable this, then
+ # boxes will only be checked for updates when the user runs
+ # `vagrant box outdated`. This is not recommended.
+ # config.vm.box_check_update = false
+
+ # Create a forwarded port mapping which allows access to a specific port
+ # within the machine from a port on the host machine. In the example below,
+ # accessing "localhost:8080" will access port 80 on the guest machine.
+ # NOTE: This will enable public access to the opened port
+ # config.vm.network "forwarded_port", guest: 80, host: 8080
+
+ # Create a forwarded port mapping which allows access to a specific port
+ # within the machine from a port on the host machine and only allow access
+ # via 127.0.0.1 to disable public access
+ # config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
+
+ # Create a private network, which allows host-only access to the machine
+ # using a specific IP.
+ # config.vm.network "private_network", ip: "192.168.33.10"
+
+ # Create a public network, which generally matched to bridged network.
+ # Bridged networks make the machine appear as another physical device on
+ # your network.
+ # config.vm.network "public_network"
+
+ # Share an additional folder to the guest VM. The first argument is
+ # the path on the host to the actual folder. The second argument is
+ # the path on the guest to mount the folder. And the optional third
+ # argument is a set of non-required options.
+ config.vm.synced_folder "..", "/pulsar"
+
+ # Provider-specific configuration so you can fine-tune various
+ # backing providers for Vagrant. These expose provider-specific options.
+ # Example for VirtualBox:
+ #
+ config.vm.provider "virtualbox" do |vb|
+ vb.name = "pulsar_dev_vm"
+ vb.memory = "4096"
+ end
+ #
+ # View the documentation for the provider you are using for more
+ # information on available options.
+
+ # Enable provisioning with a shell script. Additional provisioners such as
+ # Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the
+ # documentation for more information about their specific syntax and use.
+ config.vm.provision "shell", inline: <<-SHELL
+ yum update -y
+ yum install -y kernel-devel
+ yum install -y kernel-headers
+ yum install -y wget vim java-1.8.0-openjdk-devel maven docker gcc-c++
+ SHELL
+end
--
To stop receiving notification emails like this one, please contact
mmerli@apache.org.