Category Archives: Source

source, example, sample
로직이 포함된 내용을 소스기반으로 설명합니다.

[Source | C++] 변수명 정의 규칙

C++ 개발시 변수명을 아래와 같은 규칙으로 정의 해야 한다.


작성일 : 2022-03-14


* 중복된 변수이름은 사용할 수 없다
* 언더스코어(_)를 제외한 특수문자는 사용할 수 없다
* 숫자로 시작하는 변수명은 사용할 수 없다
* 변수명 길이에 제한은 없다
* 변수명은 대소문자를 구분하지만 프로그램시 혼동이 오므로 동일명은 사용하지 않도록한다.
* 키워드를 변수명으로 사용할 수 없다. ( [Source | C++] 키워드 목록 )

[Source | Nodejs] 테스트 클라이언트 – HTTP

API 테스트를 위한 클라이언트 코드를 정리한다.


작성일 : 2022-01-28
nodeJs Ver : v16.13.1


1> 코드작성 (client.js)

// For Execute Shell
//   node client.js URL-A
const http = require("http");
const name = "OPENDOCS_TEST_CLIENT";

if(process.argv.length < 3) {
    console.log("Error - TestCase Require.");
}
const testCase = process.argv[2];
const req = require(`./ClientTestCase/${testCase}`);

http.request(req, (res) => {
    let bodyStr = '';
    res.on("data", chunk => {
        bodyStr += chunk;
    });
    res.on("end", () => {
        // Request
        console.log(`---------- Result (${name} : ${testCase}) ----------`);
        console.log(res.headers);
        console.log("----------------------------------------");
        console.log(bodyStr);
        console.log("------------------------------------------------------------//\n\n\n");
    });
}).end(req.body);

2> 요청샘플 작성 : ClientTestCase 폴더에 {API명}.js 로 생성한다

// ./ClientTestCase/URL-A.js
// 테스트시 'node client.js URL-A' 명령으로 실행
exports.host = "127.0.0.1";
exports.port = 9090;
exports.method = "POST";
exports.path = "/url_a";
exports.headers = {"Content-Type": "application/json", "TEST": "TET"};
exports.body = JSON.stringify({
    data: "hello A"
});

// ./ClientTestCase/URL-B.js
// 테스트시 'node client.js URL-B' 명령으로 실행
exports.host = "127.0.0.1";
exports.port = 9090;
exports.method = "POST";
exports.path = "/url_b";
exports.headers = {"Content-Type": "application/json", "TEST": "TET"};
exports.body = JSON.stringify({
    data: "hello B"
});

[Source | Nodejs] 외부연동 테스트 서버 – HTTP

외부연동 개발시 임시로 서버를 실행해 놓고 테스트 하기 위한 코드를 정리한다.


작성일 : 2022-01-26
nodeJs Ver : v16.13.1


1> 코드작성 (server.js)

// For Execute Shell
//   node server.js
const http = require("http");
const fs = require('fs');
const port = 9090;
const name = "OPENDOCS_TEST_SERVER";

http.createServer((req, res) =>{
    let bodyStr = '';
    req.on("data", chunk => {
        bodyStr += chunk;
    });
    req.on("end", () => {
        // Request
        let transactionId = Date.now().toString();
        console.log(`---------- Request (${name} : ${transactionId}) ----------`);
        console.log(req.headers);
        console.log("----------------------------------------");
        console.log(bodyStr);

        // Response        
        let resStatus = 404;
        let resHead = {"Content-Type": "application/json", transactionId};
        let resBody = {};
        if(req.url == "/url_a") {
            // - TODO
            const fileName = 'url_a.json';
            resStatus = 200;
            resHead = {...resHead, "additionalHead": "url_a"};
            const jsonFile = fs.readFileSync(`./ServerTestCase/${fileName}`, 'utf8');
            resBody = JSON.parse(jsonFile);
        } else if(req.url == "/url_b") {
            // - TODO
            const fileName = 'url_b.json';
            resStatus = 200;
            resHead = {...resHead, "additionalHead": "url_b"};
            const jsonFile = fs.readFileSync(`./ServerTestCase/${fileName}`, 'utf8');
            resBody = JSON.parse(jsonFile);
        }
        res.writeHead(resStatus, resHead);
        res.end(JSON.stringify(resBody));

        console.log(`---------- Response (${name} : ${transactionId}) ----------`);
        console.log(resHead);
        console.log("----------------------------------------");
        console.log(resBody);
        console.log("------------------------------------------------------------//\n\n\n");
    });
}).listen(port);

2> 응답샘플 작성 : ServerTestCase 폴더 아래 선언한 fileName 과 일치하게 생성

// ./ServerTestCase/url_a.json
{
    "TEST": "TEST URL-A"
}
// ./ServerTestCase/url_b.json
{
    "TEST": "TEST URL-B"
}

파일을 실시간으로 읽어 응답하기 때문에 서버 재시작 없이 응답값을 변경하여 테스트 할 수 있다.