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.5k
Glint
RedDotRubyConf 2013
http://www.reddotrubyconf.com/
Kentaro Kuribayashi
June 07, 2013
Tweet
Share
More Decks by Kentaro Kuribayashi
See All by Kentaro Kuribayashi
大高生へのメッセージ(令和6年度「大高未来塾」) / Messages to Current Students
kentaro
0
69
「始め方」の始め方 / How to Start Starting Things
kentaro
5
720
Dynamic IoT Applications and Isomorphic IoT Systems Using WebAssembly
kentaro
1
950
わたしがこのところハマっている「ライセンスフリー無線」のご紹介 / An Invitation to License-Free Radio
kentaro
1
380
先行きの見えなさを楽しさに変える ーVUCA時代のキャリア論と絶対他力主義ー / How to develop your career in the VUCA era
kentaro
7
4.6k
組織の生産性を高める意思決定の構造と方法 / How to do make decision rapidly and effectively
kentaro
36
21k
キャリアを時間・空間軸で考える / Thinking about your career from both time and space viewpoints
kentaro
15
15k
WEB+DB PRESSで特集記事を書く方法 / How to Become an Author of WEB+DB PRESS
kentaro
6
1.4k
GMOペパボが考えるこれからのサービス開発 / Toward The Next Service Development Era
kentaro
1
1.7k
Other Decks in Technology
See All in Technology
Azure OpenAI Service Dev Day / LLMでできる!使える!生成AIエージェント
masahiro_nishimi
3
810
Azure AI ことはじめ
tsubakimoto_s
0
130
データベース研修 DB基礎【MIXI 24新卒技術研修】
mixi_engineers
PRO
0
220
初中級者用如何使用backlog -VALE TUDOEDITION-
in0u
0
140
What is DRE? - Road to SRE NEXT@広島
chanyou0311
3
630
開発生産性をむしろ向上させる セキュリティパートナーの作り方 / Dev Productivity Con 2024
flatt_security
0
390
フルリモートワークはエンジニアの夢を叶えたか? #cm_odyssey
mamohacy
2
600
AOAI Dev Day - Opening Session
yoshidashingo
2
470
20240725 LLMによるDXのビジョンと、今何からやるべきか @Azure OpenAI Service Dev Day
nrryuya
3
1.2k
スレットハンティングについて知っておきたいこと
hacket
0
130
「我々はどこに向かっているのか」を問い続けるための仕組みづくり / Establishing a System for Continuous Inquiry about where we are
daitasu
0
170
VPoEの視点から見た、ヘンリーがサーバーサイドKotlinを使う理由 / Why Server-side Kotlin 2024
cho0o0
1
420
Featured
See All Featured
Making the Leap to Tech Lead
cromwellryan
127
8.7k
The Cult of Friendly URLs
andyhume
75
5.9k
Optimising Largest Contentful Paint
csswizardry
18
2.6k
Why You Should Never Use an ORM
jnunemaker
PRO
51
8.9k
The Language of Interfaces
destraynor
151
23k
Embracing the Ebb and Flow
colly
81
4.3k
In The Pink: A Labor of Love
frogandcode
139
22k
Infographics Made Easy
chrislema
238
18k
Writing Fast Ruby
sferik
623
60k
No one is an island. Learnings from fostering a developers community.
thoeni
17
2.8k
Build your cross-platform service in a week with App Engine
jlugia
227
17k
Fireside Chat
paigeccino
25
2.8k
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