Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Glint
Search
Kentaro Kuribayashi
June 07, 2013
Technology
2
3.6k
Glint
RedDotRubyConf 2013
http://www.reddotrubyconf.com/
Kentaro Kuribayashi
June 07, 2013
Tweet
Share
More Decks by Kentaro Kuribayashi
See All by Kentaro Kuribayashi
社会人力と研究力ー博士号をキャリアの武器にするー
kentaro
2
140
IoTシステム開発の複雑さを低減するための統合的アーキテクチャ
kentaro
2
1.6k
Bidirectional Quadratic Voting Leveraging Issue-Based Matching
kentaro
2
480
大高生へのメッセージ(令和6年度「大高未来塾」) / Messages to Current Students
kentaro
0
290
「始め方」の始め方 / How to Start Starting Things
kentaro
5
920
Dynamic IoT Applications and Isomorphic IoT Systems Using WebAssembly
kentaro
1
1.5k
わたしがこのところハマっている「ライセンスフリー無線」のご紹介 / An Invitation to License-Free Radio
kentaro
1
610
先行きの見えなさを楽しさに変える ーVUCA時代のキャリア論と絶対他力主義ー / How to develop your career in the VUCA era
kentaro
7
6k
組織の生産性を高める意思決定の構造と方法 / How to do make decision rapidly and effectively
kentaro
41
23k
Other Decks in Technology
See All in Technology
Kafka vs. Pulsar: Performance Evaluation by Petabyte-Scale Streaming Platform Providers
lycorptech_jp
PRO
1
290
LT:組込み屋さんのオシロが壊れた!
windy_pon
0
580
バクラクのモノレポにおける AI Coding のための環境整備と {Roo,Claude} Code活用事例 / AI Coding in Bakuraku's Monorepo: Environment Setup & Case Studies with {Roo, Claude} Code
upamune
4
820
AWS Lambdaでサーバレス設計を学ぼう_ベンダーロックインの懸念を超えて-サーバレスの真価を探る
fukuchiiinu
4
430
MCPを利用して自然言語で3Dプリントしてみよう!
hamadakoji
0
200
GitHub Copilot Use Cases at ZOZO
horie1024
1
330
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
2
7.3k
ソフトウェアテストのAI活用_ver1.20
fumisuke
0
200
やさしいClaude Code入門
minorun365
PRO
40
32k
医療業界に特化した音声認識モデル構築のためのアノテーションの実態
thickstem
0
390
データ戦略部門 紹介資料
sansan33
PRO
1
3.1k
OpenJDKエコシステムと開発中の機能を紹介 2025夏版
chiroito
1
1.1k
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
760
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
20
1.3k
Being A Developer After 40
akosma
91
590k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Producing Creativity
orderedlist
PRO
346
40k
How STYLIGHT went responsive
nonsquared
100
5.6k
How GitHub (no longer) Works
holman
314
140k
Making the Leap to Tech Lead
cromwellryan
134
9.3k
Facilitating Awesome Meetings
lara
54
6.4k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.6k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
1
96
Why Our Code Smells
bkeepers
PRO
337
57k
Transcript
Glint Fires arbitrary TCP servers http://www.flickr.com/photos/tjblackwell/3107540997/
@kentaro Software engineer to build technical basis Rubyist / Perl
Monger Kentaro Kuribayashi paperboy&co.
None
Problem
Applications often consists of various components
• Cache servers • Storage servers • Job queue/workers •
Other applications (e.g. external APIs) • etc.
• Launch servers in advance (e.g mysql/pg with Rails) •
Stub out connections to the servers (e.g. stub/mock in RSpec) To deal with it, you may:
Launching Servers • We don’t always need such many servers
• It can be waste of limited resources of our daily- used local machine
Stubbing out Connections • Efficient way to test apps that
depends on external components • But we can’t tell whether or not our apps work well indeed against real servers
Solution
Glint
Glint is a library which allows you to fire arbitrary
TCP servers to help you test your codes against those real servers without stubbing out.
1. Fork a child process for a TCP server 2.
Find an empty port for the server 3. Exec the server program using the port 4. Destroy the child process when it’s no longer needed
1. Fork a child process for a TCP server 2.
Find an empty port for the server 3. Exec the server program using the port 4. Destroy the child process when it’s no longer needed
Basic usage
With RSpec
servers/memcached.rb
spec_helper.rb
**_spec.rb
App + External App
initializer/**.rb
**_spec.rb
TCP server + TCP server
Fluentd::Integration
How Glint Cleans up the Servers
http://ruby-doc.org/core-2.0/ObjectSpace.html “ObjectSpace also provides support for object finalizers, procs that
will be called when a specific object is about to be destroyed by garbage collection.”
glint/server.rb Glint::Server#stop
• Stubbing out external connection may cause some problems •
Glint allows you to easily fire up TCP servers as you need • Patches are welcome! Recap