Langsung ke konten utama

Continues Integration Menggunakan Travis CI dan Github Part 3


Setelah sekian lama saya tidak update karna kesibukan akhirnya kali ini saya bisa update melanjutkan postingan sebelumnya :D.

Pada artikel sebelumnya yaitu Continues Integration Menggunakan Travis CI dan Github Part 2 kita telah membuat test untuk proyek yang akan dibuat, dan pada postingan kali ini kita akan menerapkan tes yang telah dibuat.


Menerapkan tes

Jalankan perintah berikut pada cmd/terminal untuk menginstall library yang kita gunakan untuk membuat server.

npm install express mongodb --save

Disini saya menggunakan express untuk mempermudah dalam pembuatan server dan mongodb database untuk menyimpan riwayat pencarian. Pada kasus ini saya menggunakan layanan mlab.com untuk bagian database mongodb. Anda dapat mendaftar di mlab.com kemudian membuat database dan user baru serta mengcopy mongodb uri, uri tersebut nantinya akan digunakan untuk autentikasi ke layanan mlab.
Mongodb URI


Sekarang buat file baru beri nama server.js dan copy koding berikut

const app = require('./app');
const http = require('http');
const port = process.env.PORT || 8080;
const server = http.createServer(app);

// memulai server dan mendengarkan pada port yang telah ditentukan
server.listen(port);
server.on('listening', function () {
console.log('server running and listening at port ' + port);
});
// mendengarkan event error yang terjadi di server
server.on('error', onError);

function onError(error) {
if (error.syscall !== 'listen') {
throw error;
}
const bind = typeof port === 'string' ? 'Pipe ' + port : 'Port ' + port;
switch (error.code) {
case 'EACCES':
console.error(bind + ' requires elevated privileges');
process.exit(1);
break;
case 'EADDRINUSE':
console.error(bind + ' is already in use');
process.exit(1);
break;
default:
throw error;
}
}

Selanjutnya buat file javascript baru beri nama app.js, pada file ini kita akan menginisialisasikan tiap route yang akan digunakan. Pertama-tama kita akan menginisilaisasikan express dan membuat halaman index.
const path = require('path');
// menginisialisasikan express framework
const express = require('express');
const app = express();
// megirimkan response file index.html ke sisi klien saat server diakses hanya menggunakan hostname
// http://expressjs.com/en/starter/basic-routing.html
app.get('/', function (req, res) {
res.sendFile(path.join(__dirname, 'index.html'));
});
Kemudian buat file html baru beri nama index.html dan copykan coding berikut.


Sekarang kita akan membuat API route untuk pencarian.
const path = require('path');
// menginisialisasikan express framework
const express = require('express');
const app = express();
const apiKey = process.env.GCS_API_KEY || 'GOOGLE_CUSTOM_SEARCH_API_KEY';
const baseUrl = 'https://www.googleapis.com/customsearch/v1?key=' + apiKey + '&searchType=image&cx=012158711088233114633:p02zzyrapyg&q=';
// megirimkan response file index.html ke sisi klien saat server diakses hanya menggunakan hostname
// http://expressjs.com/en/starter/basic-routing.html
app.get('/', function (req, res) {
res.sendFile(path.join(__dirname, 'index.html'));
});
// mengirimkan API response array dari Google Custom Search saat user mengakses url http://yourweb.com/anything
app.get('/:query', handleSearch);

function handleSearch(req, res) {
// mendapatkan url query paramater
const query = req.params.query;
const limit = req.query.limit || 10;
const startIndex = req.query.offset || 1;
// jika offset lebih dari 1 maka tambahkan offset dengan limit
if (startIndex > 1) startIndex = (startIndex * limit) - limit;
const url = baseUrl + query + '&num=' + limit + '&start=' + startIndex;
// mengirim http request ke Google Custom Search API
httpRequest(url).then(function (response) {
var history = {
"term": query,
"time": new Date().toLocaleString()
};
// Menyimpan query dan waktu ke database
if (query !== 'favicon.ico') {
db.save(history);
response = JSON.parse(response);
console.log('response', response);
// mengirimkan response dari Google Custom Search API ke klien
res.send(response.items.map(function (item) {
item.image.link = item.link;
return item.image;
}));
}
});
}

Sekarang buat file javascript baru beri nama httprequest.js kemudian copy koding berikut
const http = require('http');
const https = require('https');

module.exports = function (url, data) {
return new Promise(function(resolve, reject) {
if(url.startsWith('https://'))
https.get(url, function(response) {
console.log('statusCode:', response.statusCode);
// Continuously update stream with data
var body = '';
response.on('data', function (d) {
body += d.toString();
});
response.on('error', reject);
response.on('end', function () {
// Data reception is done, do whatever with it!
resolve(body);
});
}).on('error', reject);
if(url.startsWith('http://'))
http.get(url, function(response) {
console.log('statusCode:', response.statusCode);
// Continuously update stream with data
var body = '';
response.on('data', function (d) {
body += d.toString();
});
response.on('error', reject);
response.on('end', function () {
// Data reception is done, do whatever with it!
resolve(body);
});
}).on('error', reject);

});
}

Selanjutnya buat file javascript baru beri nama db.js.
const mongodb = require('mongodb');
const MongoClient = mongodb.MongoClient;
const url = process.env.MONGOLAB_URI || 'MONGODB_URI';

// Menggunakan metode connect untuk melakukan koneksi ke mlab.com
MongoClient.connect(url, function (err, db) {
if (err) {
console.log('Unable to connect to the mongoDB server. Error:', err);
} else {
console.log('Connection established to mongolab db');
db.createCollection("histories", {
capped: false,
size: 5242880,
max: 5000
}, function () {
//Close connection
db.close();
});

}
});

// menghapus data dari database
module.exports.deleteData = function (obj) {
MongoClient.connect(url, function (err, db) {
if (err)
throw new Error('Unable to connect to the mongoDB server. Error:', err);
var links = db.collection('histories');
links.remove(obj, function (err, result) {
if (err) throw err;
console.log('Deleted ' + result);
db.close();
});
});
}
// menyimpan data ke database
module.exports.save = function (obj) {
MongoClient.connect(url, function (err, db) {
if (err)
throw err;
var histories = db.collection('histories');
histories.save(obj, function (err, result) {
if (err) throw err;
console.log('Saved ' + result);
db.close();
});
})
}
// mendapatkan semua riwayat pencarian
module.exports.getHistory = function (req, res) {
MongoClient.connect(url, function (err, db) {
var histories = db.collection('histories');
histories.find({}, {}, {
"limit": 10,
"sort": {
"time": -1
}
}, function (err, history) {
if (err) return console.error(err);
history.toArray(function (err, result) {
if (err) throw err;
console.log(result);
res.send(result.map(function (arg) {
// Displays only the field we need to show.
return {
term: arg.term,
time: arg.time
};
}));
});
});
});
};

Sekarang jalankan tes kembali maka Anda akan melihat bahwa semua tes sudah berhasil.

Pada postingan selanjutnya kita akan mulai menggunakan Github dan Travis CI untuk melakukan Continues Integration.

Komentar

Postingan populer dari blog ini

Menagapa Pesawat Sering Terguncang?

Foto: Lion Air Ternyata peralihan atau berubahnya iklim dapat saja memperburuk turbulensi udara. Bagi Kamuyang melakukan perjalanan udara, hal ini tentu akan mengganggu kenyamanan perjalanan Anda. Seberapa buruk turbulensi ini? Cukup kuat sehingga dapat saja melempar penumpang dan awak pesawat di sekitar kabin jika tak memasang sabuk pengaman. Hal ini merupakan hasil studi dari Universitas Reading seperti dipublikasikan di Advances in Atmospheric Sciences , seperti ditulis Digital Trend . Menurut studi ini, makin buruknya kualitas udara memengaruhi pergerakan naik turun pesawat yang lebih kuat dari gravitasi. Para ahli percaya peralihan atau berubahnya iklim membuat fenomena ini lebih sering dua tiga kali dari yang terjadi saat ini. Dengan demikian, berjalan di pesawat, meminta layanan makanan, atau bahkan memegang sesuatu menjadi lebih sulit dilakukan. Studi ini menyebutkan bahwa turbulensi ringan akan meningkat 59 persen. Turbulensi ringan hingga menengah meningkat 75 persen, Pada sp...

Mencari Penghasilan Dengan Cepat Di Probux

Situs yang satu ini merupakan situs PTC (Paid To Click) sama seperti Clixsense , Neobux, DonkeyMails  atau seperti situs PTC lainnya. Hanya saja biasanya setiap situs PTC memiliki system yang berbeda. Contoh : Di Donkeymail selain Anda dibayar setiap melihat iklan Anda juga akan dibayar setiap membaca email. Apa Kelebihan Probux dibandingkan dengan PTC lainnya ? Kelebihan Probux adalah Anda dapat menyewa refferal dan nilai setiap iklannya cukup tinggi. Anda bahkan tidak perlu bersusah payah untuk mempromosikan link refferal Anda kemana-mana. Anda hanya perlu menyewanya saja di Probux.  Berikut adalah daftar harga untuk menyewa refferal di Probux : Harga 3 referral adalah $0.6/bulan Harga 10 refferal adalah $2/bulan Harga 20 refferal adalah $4/bulan Harga 50 refferal adalah $10/bulan Harga 70 refferal adalah $14/bulan Harga 100 refferal adalah $20/bulan Apa keuntungan yang saya dapatkan jika menyewa refferral ? Keuntungan Anda jika Anda menyewa refferal adalah Anda akan mendapa...

Dua Waktu Yang Dilarang Oleh Rasulullah SAW Untuk Tidur

Tidur menjadi sesuatu yang esensi dalam kehidupan kita. Karena dengan tidur, kita menjadi segar kembali. Tubuh yang lelah, urat-urat yang mengerut, dan otot-otot yang dipakai beraktivitas seharian, bisa meremaja lagi dengan melakukan tidur. Dalam Islam, semua perbuatan bisa menjadi ibadah. Begitu pula tidur, seperti yang dicontohkan oleh Rasulullah saw. Dalam Al-Quran, Allah swt pun menyuruh kita untuk tidur. Namun, ternyata ada dua waktu tidur yang dianjurkan oleh Rasulullah untuk tidak dilakukan. 1. Tidur di Pagi Hari Setelah Shalat Shubuh Dari Sakhr bin Wadi’ah Al-Ghamidi radliyallaahu ‘anhu bahwasannya Nabi shallallaahu ‘alaihi wasallam bersabda : ”Ya Allah, berkahilah bagi ummatku pada pagi harinya” (HR. Abu dawud 3/517, Ibnu Majah 2/752, Ath-Thayalisi halaman 175, dan Ibnu Hibban 7/122 dengan sanad shahih). Ibnul-Qayyim telah berkata tentang keutamaan awal hari dan makruhnya menyia-nyiakan waktu dengan tidur, dimana beliau berkata : “Termasuk hal yang makruh bagi mereka – yaitu o...