def test_dump_load(self): service = tilecache_service() raster = service.layers.get("valid-raster") in_tiles = [_ for _ in grid(raster, bbox=[655000,194000,672500,206000], levels=(19,20))] f = StringIO() dump(raster, in_tiles, f) f.seek(0) out_layername, out_tiles = load(f, service) f.close() assert out_layername == raster.name assert out_tiles == in_tiles
def send_notification_email(self): attachements = [] body_text = "started at: %s\n" % (datetime.fromtimestamp(int(self.started_at))) body_text += "ended at: %s\n" % (datetime.fromtimestamp(int(self.stopped_at))) times_stats = "%d threads have generate %d tiles in %s (%.1f tiles/s)" times_stats %= ( self.poolsize, self.success_count, timedelta(seconds=int(self.stopped_at - self.started_at)), self.success_count / (self.stopped_at - self.started_at), ) logger.info(times_stats) body_text += times_stats + "\n" if self.success_count > 0: times_stats = "average time: render = %.3fs, post-proc = %.3fs, save = %.3fs" times_stats %= ( self.duration["render"] / self.success_count, self.duration["post-proc"] / self.success_count, self.duration["save"] / self.success_count, ) logger.info(times_stats) body_text += times_stats + "\n\n" body_text += "Uses metatiling: %s\n" % (self.layer.metaTile) body_text += "WMTS dimension: %s\n" % (self.layer.metadata.get("dimension", "n/a")) body_text += "WMTS matrix set: %s\n" % (self.layer.metadata.get("matrix_set", "n/a")) body_text += "bounding box: %s\n" % (str(self.bbox)) body_text += "levels: %s\n" % (str(self.levels)) if len(self.failures) or self.fatal: logger.info("errors saved to %s" % self.error_logs.name) if not self.fatal: tiles = os.path.join(self.error_dir, self.layer.name + "." + str(int(time.time())) + ".retry") logger.info("retry file saved to %s" % tiles) # dump(self.layer, [item.get("item") for item in self.failures], open(tiles, 'w')) dump(self.layer, self.failures, open(tiles, "w")) attachements.append(tiles) subject = self.metadata.get("mail_subject_error", "error while generating layer '%layer' on host '%host'") # fixme: display cmd line to retry body_text += "\n\nErrors list:\n\n%s" % open(self.error_logs.name).read() else: subject = self.metadata.get( "mail_subject_success", "all tiles generated for layer '%layer' on host '%host'" ) body_text += "\n\nWithout any errors!" if self.metadata.get("mail_to"): mail_to = [mail.strip() for mail in self.metadata.get("mail_to").split(",")] send_email( to=mail_to, sender=self.metadata.get("mail_from", "*****@*****.**"), subject=subject.replace("%layer", self.layer.name).replace("%host", gethostname()), body_text=body_text, files=attachements, server=self.metadata.get("mail_server_host", "localhost"), port=int(self.metadata.get("mail_server_port", "25")), ) logger.info("notification e-mail sent to %s" % mail_to) else: logger.warning("no 'mail_to' option found. no e-mail sent.")