Skip to content

Commit

Permalink
Merge pull request apache#203 from xiaoliu10/add_more_test_case
Browse files Browse the repository at this point in the history
add more test case

Former-commit-id: 0526372 [formerly ca07c24]
Former-commit-id: f5a925f
  • Loading branch information
AlexStocks committed Jul 12, 2021
2 parents 6150f65 + b46894e commit d136e93
Show file tree
Hide file tree
Showing 60 changed files with 3,500 additions and 35 deletions.
2 changes: 1 addition & 1 deletion .asf.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ github:
required_status_checks:
strict: true
contexts:
- "ubuntu-latest - Go 1.15"
- "ubuntu-latest - Go 1.14"

notifications:
commits: commits@dubbo.apache.org
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/github-actions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ jobs:
# If you want to matrix build , you can append the following list.
matrix:
go_version:
- 1.15
- 1.14

os:
- ubuntu-latest

Expand Down
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
language: go

go:
- "1.15"
- "1.14"
env:
- GO111MODULE=on

Expand Down
2 changes: 0 additions & 2 deletions build/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -144,8 +144,6 @@ stop:

## integration: Run integration test for this application
.PHONY: integration
integration: export CONF_CONSUMER_FILE_PATH ?= $(OUT_DIR)/conf/client.yml
integration: export CONF_ROUTER_FILE_PATH ?= $(OUT_DIR)/conf/router_config.yml
integration:
$(info > Running integration test for application $(PROJECT_NAME))
@go clean -testcache
Expand Down
2 changes: 2 additions & 0 deletions integrate_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,10 @@ make PROJECT_DIR=$P_DIR PIXIU_DIR=$PIXIU_DIR PROJECT_NAME=$(basename $P_DIR) BAS

# start server
make PROJECT_DIR=$P_DIR PIXIU_DIR=$PIXIU_DIR PROJECT_NAME=$(basename $P_DIR) BASE_DIR=$P_DIR/dist -f build/Makefile start
sleep 0.5
# start pixiu
make PROJECT_DIR=$P_DIR PIXIU_DIR=$PIXIU_DIR PROJECT_NAME=$(basename $P_DIR) BASE_DIR=$P_DIR/dist -f build/Makefile buildPixiu
sleep 0.5
# start integration
make PROJECT_DIR=$P_DIR PIXIU_DIR=$PIXIU_DIR PROJECT_NAME=$(basename $P_DIR) BASE_DIR=$P_DIR/dist -f build/Makefile integration
result=$?
Expand Down
35 changes: 20 additions & 15 deletions samples/dubbogo/simple/body/server/app/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,29 +35,34 @@ func init() {
// ------for hessian2------
hessian.RegisterPOJO(&User{})

cache = &UserDB{
nameIndex: make(map[string]*User, 16),
codeIndex: make(map[int64]*User, 16),
lock: sync.Mutex{},
}
cache = newUserDB()

cache.Add(&User{ID: "0001", Code: 1, Name: "tc", Age: 18, Time: time.Now()})
cache.Add(&User{ID: "0002", Code: 2, Name: "ic", Age: 88, Time: time.Now()})
}

var cache *UserDB
var cache *userDB

// UserDB cache user.
type UserDB struct {
// userDB cache user.
type userDB struct {
// key is name, value is user obj
nameIndex map[string]*User
// key is code, value is user obj
codeIndex map[int64]*User
lock sync.Mutex
}

// userDB create func
func newUserDB() *userDB {
return &userDB{
nameIndex: make(map[string]*User, 16),
codeIndex: make(map[int64]*User, 16),
lock: sync.Mutex{},
}
}

// nolint
func (db *UserDB) Add(u *User) bool {
func (db *userDB) Add(u *User) bool {
db.lock.Lock()
defer db.lock.Unlock()

Expand All @@ -73,7 +78,7 @@ func (db *UserDB) Add(u *User) bool {
}

// nolint
func (db *UserDB) AddForName(u *User) bool {
func (db *userDB) AddForName(u *User) bool {
if len(u.Name) == 0 {
return false
}
Expand All @@ -87,7 +92,7 @@ func (db *UserDB) AddForName(u *User) bool {
}

// nolint
func (db *UserDB) AddForCode(u *User) bool {
func (db *userDB) AddForCode(u *User) bool {
if u.Code <= 0 {
return false
}
Expand All @@ -101,7 +106,7 @@ func (db *UserDB) AddForCode(u *User) bool {
}

// nolint
func (db *UserDB) GetByName(n string) (*User, bool) {
func (db *userDB) GetByName(n string) (*User, bool) {
db.lock.Lock()
defer db.lock.Unlock()

Expand All @@ -110,15 +115,15 @@ func (db *UserDB) GetByName(n string) (*User, bool) {
}

// nolint
func (db *UserDB) GetByCode(n int64) (*User, bool) {
func (db *userDB) GetByCode(n int64) (*User, bool) {
db.lock.Lock()
defer db.lock.Unlock()

r, ok := db.codeIndex[n]
return r, ok
}

func (db *UserDB) existName(name string) bool {
func (db *userDB) existName(name string) bool {
if len(name) <= 0 {
return false
}
Expand All @@ -131,7 +136,7 @@ func (db *UserDB) existName(name string) bool {
return false
}

func (db *UserDB) existCode(code int64) bool {
func (db *userDB) existCode(code int64) bool {
if code <= 0 {
return false
}
Expand Down
36 changes: 32 additions & 4 deletions samples/dubbogo/simple/body/test/pixiu_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
package test

import (
"bytes"
"net/http"
"strings"
"testing"
"time"
)
Expand All @@ -29,11 +29,39 @@ import (
)

func TestPost(t *testing.T) {
var url = "http://localhost:8881/api/v1/test-dubbo/user"
url := "http://localhost:8881/api/v1/test-dubbo/user"
data := "{\"id\":\"0003\",\"code\":3,\"name\":\"dubbogo\",\"age\":99}"
contentType := "application/json"
client := &http.Client{Timeout: 5 * time.Second}
resp, err := client.Post(url, contentType, bytes.NewBufferString(data))
req, err := http.NewRequest("POST", url, strings.NewReader(data))
assert.NoError(t, err)
req.Header.Add("Content-Type", "application/json")
resp, err := client.Do(req)
assert.NoError(t, err)
assert.NotNil(t, resp)
assert.Equal(t, 200, resp.StatusCode)
}

func TestPut1(t *testing.T) {
url := "http://localhost:8881/api/v1/test-dubbo/user"
data := "{\"id\":\"0003\",\"code\":3,\"name\":\"dubbogo\",\"age\":77}"
client := &http.Client{Timeout: 5 * time.Second}
req, err := http.NewRequest("PUT", url, strings.NewReader(data))
assert.NoError(t, err)
req.Header.Add("Content-Type", "application/json")
resp, err := client.Do(req)
assert.NoError(t, err)
assert.NotNil(t, resp)
assert.Equal(t, 200, resp.StatusCode)
}

func TestPut2(t *testing.T) {
url := "http://localhost:8881/api/v1/test-dubbo/user2"
data := "{\"name\":\"dubbogo\",\"user\":{\"id\":\"0003\",\"code\":3,\"name\":\"dubbogo\",\"age\":88}}"
client := &http.Client{Timeout: 5 * time.Second}
req, err := http.NewRequest("PUT", url, strings.NewReader(data))
assert.NoError(t, err)
req.Header.Add("Content-Type", "application/json")
resp, err := client.Do(req)
assert.NoError(t, err)
assert.NotNil(t, resp)
assert.Equal(t, 200, resp.StatusCode)
Expand Down
27 changes: 27 additions & 0 deletions samples/dubbogo/simple/mix/docker/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#
# Licensed to 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. Apache Software Foundation (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.
#

version: '3'

services:
zookeeper:
image: zookeeper
ports:
- 2181:2181
restart: on-failure
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ resources:
methods:
- httpVerb: GET
onAir: true
timeout: 1000ms
timeout: 100s
inboundRequest:
requestType: http
integrationRequest:
Expand All @@ -45,7 +45,7 @@ resources:
clusterName: "test_dubbo"
- httpVerb: PUT
onAir: true
timeout: 1000ms
timeout: 100s
inboundRequest:
requestType: http
integrationRequest:
Expand All @@ -71,7 +71,7 @@ resources:
methods:
- httpVerb: PUT
onAir: true
timeout: 1000ms
timeout: 100s
inboundRequest:
requestType: http
integrationRequest:
Expand Down
File renamed without changes.
74 changes: 74 additions & 0 deletions samples/dubbogo/simple/mix/server/app/server.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
/*
* 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.
*/

package main

import (
"fmt"
"os"
"os/signal"
"syscall"
"time"
)

import (
"github.com/apache/dubbo-go/common/logger"
"github.com/apache/dubbo-go/config"
_ "github.com/apache/dubbo-go/protocol/dubbo"
_ "github.com/apache/dubbo-go/registry/protocol"

_ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
_ "github.com/apache/dubbo-go/filter/filter_impl"

_ "github.com/apache/dubbo-go/cluster/cluster_impl"
_ "github.com/apache/dubbo-go/cluster/loadbalance"
_ "github.com/apache/dubbo-go/registry/zookeeper"
)

var survivalTimeout = int(3e9)

// they are necessary:
// export CONF_PROVIDER_FILE_PATH="xxx"
// export APP_LOG_CONF_FILE="xxx"
func main() {
config.Load()
logger.Info("dubbo version is: %s", Version)
initSignal()
}

func initSignal() {
signals := make(chan os.Signal, 1)
// It is not possible to block SIGKILL or syscall.SIGSTOP
signal.Notify(signals, os.Interrupt, syscall.SIGHUP, syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT)
for {
sig := <-signals
logger.Infof("get signal %s", sig.String())
switch sig {
case syscall.SIGHUP:
// reload()
default:
time.AfterFunc(time.Duration(survivalTimeout), func() {
logger.Warnf("app exit now by force...")
os.Exit(1)
})

// The program exits normally or timeout forcibly exits.
fmt.Println("provider app exit now...")
return
}
}
}
Loading

0 comments on commit d136e93

Please sign in to comment.