Ohara 是一個 open source,如果對這個專案有興趣的人可以把程式碼拉回本機,然後進行程式碼的研究、修改,甚至覺得修改的程式碼對大家都有幫助還可以貢獻回 Ohara。
今天主要會介紹以下幾個部份:
在 Build Ohara 的程式碼之前,需要準備以下的工具:
一. 如何的把 Ohara 程式碼拉回到本機,執行 build 程式碼的動作。之後 import 到 IntelliJ IDE,說明如下:
1.如果沒有 git 可以使用以下的指令安裝 (這裡以 CentOS 為例):
# yum install -y git
2.拉取 Ohara 原始碼的指令如下:
$ git clone https://github.com/oharastream/ohara.git
3.使用以下的指令來執行 Build Ohara 的程式碼:
$ gradle clean build -x test -PskipManager
把程式碼拉回本機之後,會使用以上的指令先測試 build 一次 Ohara 的程式碼,看是否會有問題
4.把程式碼匯入到 Intellij 的 IDE
開啟 Intellij IDE 之後 -> Import Project -> 選擇 ohara 程式碼的資料夾下面的 build.grdle 檔案 -> 選擇 OK 之後就可以把 Ohara 的程式碼匯入到 Intellij 的 IDE 裡。
畫面如下
二. 如何使用 gradle 的指令,執行單元測試程式
執行一個 class 的單元測試的指令如下:
gradle clean ${OHARA_MODULE_NAME}:test --tests ${TEST_CLASS_NAME} -PskipManager
舉一個測試 ohara-agent 模組的 TestWorkerCreator class 例子,指令如下:
$ gradle clean ohara-agent:test --tests TestWorkerCreator -PskipManager
如果要執行 ohara-agent 模組,所有的單元測試可以使用以下的指令:
$ gradle clean ohara-agent:test --tests Test* -PskipManager
-PskipManager 參數主要是跳過執行前端的測試
Ohara 的 module name 可以直接看 ohara 資料夾下的子資料名稱,目前主要的模組如下:
ohara-agent、ohara-assembly、ohara-client、ohara-common、ohara-configurator、ohara-connector、ohara-it、ohara-kafka、ohara-manager、ohara-metrics、ohara-shabondi、ohara-streams、ohara-testing-util
有關於每個 module 的用途,明天還會詳細做介紹
三. 如何使用 gradle 的指令,進行 code style 和 License Header 的檢查
Ohara 因為是 Open Source 所以有可能每個寫程式碼的人習慣不太一樣,在閱讀程式碼時就要去適應不同的寫法,這樣會非常的辛苦。Ohara 要求每個人的程式碼盡量要寫的一致,這樣不同的人維護也比較好閱讀,因此 Ohara 有做 Code Style 的檢查,指令如下:
$ gradle spotlessCheck
如果不符合 Code Style 會出現以下的錯誤訊息:
Execution failed for task ':ohara-it:spotlessScala'.
> The following files had format violations:
ohara-it/src/test/scala/com/island/ohara/it/connector/BasicTestConnectorCollie.scala
@@ -301,15 +301,14 @@
··private[this]·def·testConnectors(cluster:·WorkerClusterInfo):·Unit·=
····await(()·=>
-········try·{
-··········log.info(s"worker·node·head:·${cluster.nodeNames.head}:${cluster.clientPort}") -··········result(WorkerClient(s"${cluster.nodeNames.head}:${cluster.clientPort}").connectorDefinitions()).nonEmpty =
在這裡可以使用手動的方式修改,然後在執行以上的指令進行 Code Style 的檢查,另外也可以使用以下的指令,進行 Code Style 自動的修改:
$ gradle spotlessApply
Ohara 程式碼的每個檔案的標頭都會進行 License 的宣告,可以使用以下的指令進行檢查程式碼的檔案標頭是否有漏掉:
$ gradle licenseTest
如果有漏掉會收到以下的錯誤訊息:
* What went wrong:
Execution failed for task ':licenseTest'.
> License violations were found: /home/user1/ohara/ohara-it/src/test/scala/com/island/ohara/it/connector/BasicTestConnectorCollie.scala}
在這裡可以使用手動的方式把 Licese 標頭加到漏掉的檔案。也可以使用以下的指令自動加入 License 的標頭:
$ gradle licenseApply
今天已經介紹了要如何的把 Ohara 的程式碼從 git 取到本機,並且匯入的 Intellij IDE 了以及跑測試程式的指令,如果對 Ohara 有興趣可以把程式碼拉下來玩看看,連結如下:
https://github.com/oharastream/ohara